Python函数总结(一)
一、定义函数
定义函数
函数的定义和调用
1、定义语法
def 函数名(参数1,参数2...):
语句
注意:
1、小括号必须
2、小括号之后要有冒号
3、缩进
2、调用语法
函数名(值1,值2...)
变量名 = 函数名(值1,值2...)
如果名字重名了,后者覆盖前者
示例-1:
def f1():
print('hello you')
def f2():
print('hello me')
#调用函数f1、f2
f1()
f2()
二、函数的文档说明
'''
函数的文档说明
'''
def fly(h):
'''
飞行器飞行的功能
:param h: 高度
:return: True表示成功 False表示失败
'''
print('飞行的高度为:'+ str(h) + "米")
return True
#调用函数
fly(10000)
结果:
飞行的高度为:10000米
三、函数的4种类型
1、无参数无返回值
2、无参数有返回值
3、有参数无返回值
4、有参数有返回值
说明:
1、return 写在函数的运行最后一行,返回值的同时,结束这个函数
2、没有返回值的函数,其实就相当于return None
示例-1:无参数无返回值
def f1():
print('f1为无返回值函数')
f1()
#如果将无返回值函数赋值给变量v,将返回None对象
v = f1()
print(v)
结果:
f1为无返回值函数
f1为无返回值函数
None
示例-2:无参数有返回值
def f2():
sum = 0
i = 0
while(i <= 100):
sum+=i
i = i + 1
return sum
#调用函数
result = f2()
print(result)
结果:5050
示例-3:有参数无返回值
#比较3个数的最大值
def f3(a,b,c):
temp = a ;
if(b > temp ):
temp = b
if(c > temp ):
temp = c
print("3个数最大值为:"+str(temp))
#调用函数
f3(6,8,9)
结果:3个数最大值为:9
示例-4:有参数有返回值
#比较3个数的最大值
def f3(a,b,c):
temp = a ;
if(b > temp ):
temp = b
if(c > temp ):
temp = c
return temp
#调用函数
max = f3(6,8,9)
print("3个数最大值为:"+str(max))
结果:3个数最大值为:9
Python 函数总结(二)
一、函数的参数
函数的参数包括可变和不可变类型。其中可变类型的有:列表、字典、set;
不可变类型的有:整数、浮点数、布尔、空、函数、元组、字符串
示例-1:
list = [1,2,3]
print("list被调用之前:" + str(list))
def f1 (x,list):
list.append(x)
print("list被调用之后:" + str(list))
x = 100
f1 (x,list)
结果:
list被调用之前:[1, 2, 3]
list被调用之后:[1, 2, 3, 100]
二、参数的类型
1、必选参数
按顺序、数量依次赋值。必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
示例:
调用f1()函数,你必须传入一个参数,不然会出现语法错误:
def f1(str):
print(str)
# 调用f1函数
f1("hello you,hello me");
2、默认参数
默认已经赋值了,如果调用的时候没有赋值,就使用默认值,如果赋值了,就使用赋值的。
默认参数必须在必选参数之前的位置。
示例-1:
def f2(x1 = 1 , x2 = 2 ):
print("x1 = " + str(x1) + ", x2 = " + str(x2))
#不使用默认参数x1 , x2
f2(10,20)
#使用默认参数x2
f2(100)
#使用默认参数x1 , x2
f2()
结果:
x1 = 10, x2 = 20
x1 = 100, x2 = 2
x1 = 1, x2 = 2
示例-2:
#报错!默认参数必须在必选参数之前的位置
def f2(x1 = 1 , x2):
print("x1 = " + str(x1) + ", x2 = " + str(x2))
3、不定长参数
你可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数。
不定长参数一个"*"是个元组的数据类型,二个"*"是个字典的数据类型
字典对象实际上就是java里面的Map对象
示例-1:参数是元组数据类型举例
def f( *x ):
#查看参数是什么数据类型(是元组类型)
print(type(x))
print(x)
#参数长度不定
f()
f(1)
f(1,2)
f(1,2,3)
结果:
<class 'tuple'>
<class 'tuple'>
(1,)
<class 'tuple'>
(1, 2)
<class 'tuple'>
(1, 2, 3)
示例-2:参数是元组数据类型举例
def f( *x ):
#既然是元组类型,那么可以使用for输出
for s in x:
print(s)
#参数长度不定
f("aaa","bbb","ccc")
结果:
aaa
bbb
ccc
示例-3:参数是字典对象的数据类型举例
def f ( **key_value ):
#查看带二个"*"参数的是什么数据类型(是字典类型)
print( type(key_value) )
#输出字典对象
print(key_value)
#字典对象没有值
f ()
#字典对象 k1 = "s001" , v1 = "lily"
f (k1 = "s001" , v1 = "lily")
#字典对象 k1 = "s001" , v1 = "lily",k2 = "s002" , v2 = "ada"
f (k1 = "s001" , v1 = "lily",k2 = "s002" , v2 = "ada")
结果:
<class 'dict'>
<class 'dict'>
{'k1': 's001', 'v1': 'lily'}
<class 'dict'>
{'k1': 's001', 'v1': 'lily', 'k2': 's002', 'v2': 'ada'}
示例-4:自定义个字典对象d1
def f ( **key_value ):
#输出字典对象
print(key_value)
#自定义个字典对象d1
d1 = {
"k1":"s001",
"k2":"s002",
"k3":"s003"
#调用字典对象,注意调用的格式:**字典对象
f ( **d1 )
结果:{'k1': 's001', 'k2': 's002', 'k3': 's003'}
示例-5:
#混合使用元组类型和字典类型
def f( *tuple, **kv):
print(tuple)
print(kv)
#前3个被认为是元组的元素,后2个被认为是字典元素
#注意:s001="lily" , s002="赵丽燕"中的s001、s002不能加引号,没有为什么,规定的
f ("aaa","bbb","ccc",s001="lily" , s002="赵丽燕")
结果:
('aaa', 'bbb', 'ccc')
{'s001': 'lily', 's002': '赵丽燕'}
示例-6:
#混合所有类型
def f(x1,x2,x3, *tuple, **kv):
print("x1,x2,x3为:" + str(x1)+"," + str(x2) + "," + str(x3))
print(tuple)
print(kv)
#前3个赋值给x1,x2,x3
#接着3个被认为是元组的元素,后2个被认为是字典元素
#注意:s001="lily" , s002="赵丽燕"中的s001、s002不能加引号,没有为什么,规定的
f (1,2,3,"aaa","bbb","ccc",s001="lily" , s002="赵丽燕")
结果:
x1,x2,x3为:1,2,3
('aaa', 'bbb', 'ccc')
{'s001': 'lily', 's002': '赵丽燕'}
Python函数总结(三)
一、局部变量和全局变量
局部变量:在函数内部定义的变量,用域仅局限于函数内部
全局变量:在函数外部定义,可以在程序的任何位置访问的变量,并且可以多次访问;
在函数内部不能直接修改全局变量,如果要修改,使用global声明
示例-1:
#全局变量
x = 100
#参数x1是局部变量
def f( x1 ) :
#局部变量
x2 = 20
print(x)
示例-2:
#如果想在函数体外使用函数体内定义的变量,须使用global关键字
def f( ) :
#全局变量
global x
x = 100
print(x)
f()
x = x + 1
print(x)
结果:
100
101
示例-3:
当全局变量和局部变量重名时候,在函数内优先使用局部变量
x = 10
def f( ) :
x = 100
print(x)
f()
结果:100
示例-4:
x = 10
def f( ) :
#全局变量
global x
x = 100
print(x)
f()
#global定义的x在函数内部将x值修改:x=100
x = x + 1
print(x)
结果:
100
101
二、递归函数
如果在函数内部调用自己本身,那么这个函数是递归函数。
递归效率有所降低,能用循环实现的,尽量还是用循环实现
示例:斐波那契数列
斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、
def feb(n):
if n == 1:
return 1
if n == 2:
return 1
else:
y = feb(n - 2) + feb(n - 1)
return y
y = feb(10)
print(y)
三、匿名函数
python 使用 lambda 来创建匿名函数。语法:
lambda [arg1 [,arg2,.....argn]]:expression
":"左侧是参数,右侧是返回值
示例-1:
f = lambda x : x + 1
y = f(10)
print(y)
结果:11
上面的函数类似于:
def f():
return x + 1
示例-2:map函数运算
list1 = [1,2,3]
#使用map函数映射列表list1的值到一个匿名函数中,
#匿名函数的作用是计算每个变量的平方
m = map(lambda x : x**2 , list1)
#将map对象m转换为list对象
list2 = list(m)
print(list2)
结果:[1 4 9]
示例-3:
list1 = [1,2,3]
list2 = [4,5,6]
#计算两个列表的和
m = map(lambda x ,y : x + y , list1,list2)
#将map对象m转换为list对象
list = list(m)
print(list)
结果:[5, 7, 9]
四、高阶函数
所谓高阶函数是指那些作用于函数或者返回其它函数的函数,也就是说高阶函数可以得到一个新的函数。python的functools提供
高阶函数
1、partial
为某个函数,赋值一些参数,返回一个新的函数,已经拥有了一些默认值的参数
2、reduce
函数必须有两个参数,作用域集合或者集合加初始值,先取两个值赋值给参数,然后将
函数的返回值再赋值给第一个参数,集合的第二个值给第二个参数
示例-1:
import functools
print(int('1111',8))
print(int('1111',2))
print(int('101001',2))
int2 = functools.partial(int,base=2)
print(int2('110'))
print(int2('111'))
print(int2('111',base=8))
示例-2:
ls = [1,2,3,4,5]
#计算列表所有元素之和
ret = functools.reduce(lambda x,y:x+y,ls)
print(ret)
《大数据和人工智能交流》的宗旨
1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。
2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。
3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。
根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。
根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。