一、定义函数
如果不主动调用函数,函数不会执行
#定义函数
def say_hello():
print('hello python')
print('hello linux')
#调用函数
say_hello()
执行效果:
2、函数的嵌套
示例:
def redhat():
print('hello python')
def python():
print('redhat')
python()
redhat()
3、形参及实参
#定义函数的时候的变量 叫作形参(形参可以任意起名)
def welcome(a):
print('hello',a)
#真实的数据,调用函数时传递的参数 实参
welcome('laozhao')
welcome('laozhang')
二、函数的四种形参
1、位置参数
#位置参数:形参和实参个数必须保持一致
def GetInfo(name,age): ##按照位置传参
print(name,age)
GetInfo('redhat',11)
GetInfo(11,'redhat')
GetInfo(age=11,name='redhat') ##位置不一致时也可以指定参数传递
2、默认参数
# 默认参数:形参和实参可以不一致
def mypow(x,y=2):
print(x ** y)
mypow(4)
mypow(2,3)
mypow(2,5)
3、可变参数
#可变参数
def mysum(*a):
sum = 0
for item in a:
sum += item
print(sum)
mysum(1,2,3,4)
mysum(1,2,3,4,5)
4、关键字参数
def getStuInfo(name,age,**kwargs):
"""
**kwargs是一个字典,可以传递任意多的key-value
:param name:
:param age:
:param kwargs:
:return:
"""
print(name,age)
print(kwargs)
getStuInfo('redhat','19',hobbies=['coding','devops'],gender='female',eat='apple')
三、函数的返回值
返回值: 函数运算的结果,还需要进一步操作时,给一个返回值
return用来返回函数执行结果,如果没有返回值,默认为None
python可以间接返回多个值(返回一个元组)
一旦遇到return,函数执行结束,后面的代码不会执行
示例:
def mypow(x,y=2):
print(x ** y,x+y)
return x ** y,x+ y
print('hello')
a=mypow(3)
print(a)
四、变量的作用域
局部变量:在函数内部定义的变量,只在函数内部起作用,函数
执行结束,变量自动删除
全局变量: 全局变量是在整个py文件中声明,全局范围内都可以访问
示例:
a = 1 # 全局变量
print(a)
print('outside:',id(a)) #查看变量在内存中的地址
def fun():
# global a
a = 5 #函数内部局部变量
print(a)
print('inside:',id(a)) #查看局部变脸在内存中的地址
fun()
print(a)
print(id(a))
分析: 由变量a的值可以看出来,局部变量在全局生效,但是局部变量只在函数内部生效。
在函数内部调用全局变量:
a = 1
print(a)
print('outside:',id(a))
def fun():
global a #声明a为全局变量
print(a)
print('inside:',id(a))
fun()
print(a)
print(id(a))