1.函数的定义
(1).函数的定义与调用
# 定义函数
def say_hello():
print('hello1')
print('hello2')
print('hello3')
# 调用函数,函数只有被调用了才会有输出值
say_hello()
示例1:定义求和函数(计算 20 + 30)
def sum_fun():
num1 = 20
num2 = 30
result = num1 + num2
print('%d + %d = %d' %(num1,num2,result))
sum_fun()
(2).函数的嵌套
def fun1():
print('world')
def fun2():
print('hello')
# 调用函数2(必须在函数1里先调用函数2)
fun2()
#调用函数1
fun1()
2.函数的四大参数
参数分为:形参 实参
# 形参:定义函数的时候的变量(可以任意起名)
def welcome(a):
print('hello',a)
# 实参:真实的数据信息,即调用函数的时候传的参数
welcome('lily')
welcome('tom')
形参分为: 位置参数 默认参数 可变参数 关键字参数
(1)位置参数
形参和实参个数必须保持一致,最好按位置传参
def getInfo(name,age):
print(name,age)
getInfo('westos',21)
getInfo(age=11,name='westos')
(2).默认参数
形参和实参可以不一致
# 计算x的y次方
def mypow(x,y=2):
print(x ** y)
mypow(4,3) # 4的3次方
mypow(2) # 2的2次方
(3).可变参数
可以接收任意个参数
# 累加运算
def mysum(*args):
# *args:可变参数(也可以简写为*a)
# args的数据类型为:元组(tuple)
print(args)
print(type(args))
sum = 0
for item in args:
sum += item
print(sum)
mysum(1,2,3,4,5,6,7,8,9)
mysum(1,2,3,4,5)
(4).关键字参数
def getStuInfo(name,age,**kwargs):
# **kwargs是一个字典,可以传递任意多的key-value
print(name,age)
print(kwargs)
getStuInfo('westos',19,hobbies=['coding','running'],gender='female')
3.函数的返回值
返回值:函数运行的结果,还需要进一步操作时,给一个返回值,return用来返回函数执行结果,如果没有返回值,默认为None
python可以间接返回多个值(返回了一个元组)一旦遇到return,函数执行结束,后面的代码不会执行
def mypow(x,y=2):
return x ** y,x + y
# 不会输出,因为之前有return
print('hello')
# 将函数的返回值赋值给变量a,b(有几个函数返回值就用几个变量接收)
a,b = mypow(3,4)
print(a,b)
函数返回值的意义在于,便于后续的使用
def mypow(x,y=2):
# print打印函数值,调用函数时,只能输出打印内容,但无法使用变量
print(x ** y)
# 因为无函数返回值,所以此操作为无效操作
a = mypow(2)
print(a)
4.变量的作用域
局部变量:在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会自动删除
全局变量:在函数外部定义的变量,能够被本程序中的所有对象或函数进行引用,全局变量的定义有利于程序的变量共享,简化了添加和修改的程序
(1).全局变量与局部变量的定义
# 定义全局变量
a = 1
print('outside:',id(a))
def fun():
# 定义局部变量
a = 5
print('inside:',id(a))
fun()
print(a,id(a))
(2).将局部变量声明为全局变量
# 定义全局变量
a = 1
print('outside:',id(a))
def fun():
# 将局部变量a声明为全局变量
global a
# 定义局部变量
a = 5
print('inside:',id(a))
fun()
print(a,id(a))