1. 函数的定义
在Python中,使用关键字def来定义函数,格式如下:
def关键字后面跟着函数名称和参数,用:结束;
换行缩进4个字符后,开始函数体,函数体的第一行通常是一个三引号包含的文字字符串作为函数的文档说明
例子:
#函数的定义
def hello(name):
"""打招呼
:param name: 姓名
:return:
"""
print("Hello,{user}".format(user=name))
#打印函数名,可知函数已被加载到内存中
print(hello)
#函数的调用
hello("lin")
运行结果是:
2. 局部变量和全局变量
函数体中的变量,属于局部变量,离开函数体后就被销毁;
函数外的变量,属于全局变量,如果想在函数体中使用全局变量,需要使用关键字global进行声明
例子:
#定义全局变量
money=100
percent=0.8
#定义函数
def get_money():
#使用全局变量
global money
money=money-1
#定义局部变量,变量名和全局变量名一致,但不是同一个变量
percent=0.5
#调用函数
get_money()
print(money)
print(percent)
运行结果是:
3. 函数的参数
(1)位置参数
调用函数时,传递的参数都是根据位置来跟函数定义里的参数表匹配的
(2)关键字参数
调用函数时,明确指定参数值赋给哪个形参;
可以混合使用位置参数和关键字参数,前提是要先给出位置参数
(3)参数默认值
为参数提供默认值,调用函数时可传可不传该默认参数的值;
所有位置参数必须出现在默认参数前,包括函数定义和调用
#定义函数
#默认参数必须在非默认参数之后
def hello(age,name='lin'):
print("Hello,{user}.I am {age} years old".format(user=name,age=age))
#位置参数
hello(18)#第2个参数有默认值,允许不传值
hello(20,'huang')
hello('huang',20)
#关键字参数
hello(age=22)#第2个参数有默认值,允许不传值
hello(age=24,name='zheng')
#混合使用位置参数和关键字参数
hello(30,name='yuan')
运行结果是:
(4)不定长参数
包裹位置参数-元组(*args)
传进的所有位置参数都会被args变量收集,它会根据传进参数的位置合并为一个元组,args是元组类型
#不定长参数
#包裹位置参数
def hello(*args):
print(args)
#不定长位置参数传参
hello('lin','huang','zheng')
#元组解包裹传参
data=('lala','haha','huhu')
hello(*data)
运行结果是:
包裹关键字参数-字典(**kwargs)
传进的所有关键字参数被变量kwargs收集,kwargs是一个字典
#不定长参数
#包裹关键字参数
def hello(**kwargs):
print(kwargs)
#不定长关键字参数传参
hello(name='lin',age=18,sex='M')
#字典解包裹传参
data={'name':'huang','age':30,'sex':'F'}
hello(**data)
运行结果是:
4. 匿名函数
匿名函数:不定义函数直接使用
在Python中,使用lambda表达式生成匿名函数
格式:函数名=lambda 参数列表:返回值
f=lambda x,y:x+y
print(f(1,3))
运行结果是:
4