函数也叫方法,就是把实现某种功能的一组代码封装起来,当你需要这个功能时直接调用函数即可。
定义函数:
定义函数时要注意 “def”关键字,“:”,“函数体缩进”;用“return”使函数有具体返回值,没有return返回“None”.
def SUM(a, b):
return a + b
调用函数:
函数名()的格式就可以调用函数
def SUM(a, b):
return a + b
num1 = int(input("Please input num1: "))
num2 = int(input("Please input num2: "))
sum = SUM(num1,num2)
print("num1 + num2 = %d" %sum)
函数的参数:
参数是写在函数()里面的东东。定义函数时,括号里面的参数是形式参数简称“形参”;调用函数时,括号里面的参数是实际参数简称“实参”。
参数具体有下面几类:
位置参数(必填)
def p_info(name, age,sex):
默认值参数(非必填)
def p_info(name, age,sex = '男'):
可变参数 (*args)
也叫参数组,非必填,传参时个数不固定,接收的是个元祖
def post(*args):
post("001","login","http://www.baidu.com","post","a=1") # 调用时根据实际情况传递的参数可多可少
关键字参数 (**kwargs)
非必填,传参时用 key = value 的方式,参数个数不固定,接收的是个字典,也可直接用字典传参
def p_info(**kwargs):
p_info(name="张三",age=18,id="001")
d={"name":"张三","age": 18, "id": "001"}
p_info(**d) # 直接传字典
如果参数列表中同时有“位置参数”,“默认值参数”,“可变参数”和“关键字参数”,调用函数时传参的顺序是
“位置参数”->“默认值参数”->“可变参数”->“关键字参数”
如果参数都是必填参数且个数较多我们很容易忘记各参数的顺序,可以用指定参数传值的方法,称之为参数的“关键字调用”
def write(filename, model,e-coding,user,os, money, other):
write(os='Win7',user='张三',model='w',filename='a.txt',e-coding='utf-8',money=999,other='AAA')
# 如此可以不按顺序,但个数不能少
全局变量和局部变量:
有了函数就会涉及到“全局变量”和“局部变量”的概念。局部变量是定义在函数里的,有函数才有它,函数被调用时该函数的
局部变量被定义,函数执行结束时,改变量被释放;全局变量是定义在函数之外的可被整个程序共享,只有程序结束时才被释放。
如果想在函数内操作全局变量,int 和 string型的需要在变量前加global关键字,字典和列表型就不用加global关键字。
name = "张三"
def p_info():
name = "Mike"
print("name:", name)
p_info()
print(name)
运行结果:
name: Mike
张三
name = "张三"
def p_info():
global name
name = "Mike"
print("name:", name)
p_info()
print(name)
运行结果:
name: Mike
Mike