python函数内容
在刚接触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() # 执行函数 # 携带参数函数格式 def name(name): print('这是个函数名',name) return name
name('name')
通常来说函数必须要遵循以下几点:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 圆括号之间可以用于定义参数。
- 函数内容以冒号起始,并且缩进。
- return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
可变与不可变传参
传不可变参数
# 传不可变参数
def name(a): a = 20 print(a) b = 10 name(b) # 结果为20 print(b) # 结果为10
传可变参数
def changeme( 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' def name_01(name): print('现在我的名字是:',name) name = 'test' print('现在我的名字是:',name) name_01(name) print('外面我的名字是:',name) 执行结果: 现在我的名字是: AnJing 现在我的名字是: test 外面我的名字是: AnJing
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中
函数之间的调用
def jiafa(a,b): '''加法''' c = a + b return c # 返回C def jianfa(c): '''减法''' d = 2 s = c -d print(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传入的内容会变成一个字典
递归
函数之间可以进行调用,那么函数本身也可以进行调用,这种函数我们叫做递归
# 递归函数 def calc(n): print(n) if int(n/2) ==0: return n return calc(int(n/2)) calc(10) 执行结果: 10 5 2 1