在刚接触python的时候就有个疑问,什么是函数? python语言的函数和数学语言的函数有区别吗?
什么是函数
数学函数:给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表示
python函数:函数就是一段事先组织好的,它具有可重复性,封装好,用来实现某个相关联功能的代码段,函数能提高应用的模块性,和代码的重复利用率。
格式:
#未携带函数格式
def name(): #name表示函数的名称
print('这是个函数') #函数的内容
return name #返回函数值
name()#执行函数
#携带参数函数格式
defname(name):print('这是个函数名',name)returnname
name('name')
通常来说函数必须要遵循以下几点:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
圆括号之间可以用于定义参数。
函数内容以冒号起始,并且缩进。
return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
可变与不可变传参
传不可变参数
# 传不可变参数
defname(a):
a= 20
print(a)
b= 10name(b)#结果为20
print(b) #结果为10
传可变参数
defchangeme( mylist ):
mylist.append([1,2,3,4])print( "函数内取值:", mylist)return
#调用changeme函数
mylist = [10,20,30]
changeme( mylist )
执行结果:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]
不可变:整数、字符串、元组
可变参数:字典,列表
全局变量和局部变量
name = 'AnJing'
defname_01(name):print('现在我的名字是:',name)
name= 'test'
print('现在我的名字是:',name)
name_01(name)print('外面我的名字是:',name)
执行结果:
现在我的名字是: AnJing
现在我的名字是: test
外面我的名字是: AnJing
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中
函数之间的调用
defjiafa(a,b):'''加法'''c= a +breturnc # 返回Cdefjianfa(c):'''减法'''d= 2s= c -dprint(s)
c= jiafa(2,3) #调用函数加法
jianfa(c) #调用函数减法
执行结果:3加法函数返回值赋给C,函数减法接受参数C进行完成减法操作
非固定参数
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数,引入*args,**kwargs
#*args
def name(name,*args):print(name,args)
name('AnJing','test',123)
执行结果:
AnJing ('test', 123)
这个时候会发现*args 传入的内容会变成一个元祖#**kwargs
def name(name,**kwargs):print(name,kwargs)
name('AnJing',it='test',age=123)
执行结果:
AnJing {'it': 'test', 'age': 123}
这个时候会发现**kwargs传入的内容会变成一个字典
递归
函数之间可以进行调用,那么函数本身也可以进行调用,这种函数我们叫做递归
#递归函数
defcalc(n):print(n)if int(n/2) ==0:returnnreturn calc(int(n/2))
calc(10)
执行结果:10
5
2
1




被折叠的 条评论
为什么被折叠?



