如何定义一个函数
def hello():
print(‘python’)
print(‘hello’)
#通过函数名来调用函数
hello()
hello()
在一个函数内可调用另一个函数
函数中的参数
#定义函数的时候的变量 叫形参(名字任意)
#a是形参
def welcome(a):
print(‘welcome’,a)
#真实的数据信息,调用函数的时候 传递 叫实参
#‘tom’,'lily’是实参
welcome(‘tom’)
welcome(‘lily’)
#位置参数:形参和实参必须保持位置对应,不然会错乱
def getinfo(name,age):
print(‘姓名:’,name,‘年龄:’,age)
getinfo(‘westos’,11)
getinfo(11,‘westos’)
#也可以直接用形参直接定义
getinfo(age=11,name=‘westos’)
#默认参数,有实参输入则为实参,无实参输入则为设定的默认值
def mypow(x,y=2):
#参数y有输入为输入值,无输入默认为2
print(x ** y)
mypow(2,3)
mypow(2)
#可变参数:只能是元组类型
def mysum(*a):
print(*a)
print(type(a))
print(a)
sum = 0
for item in a:
sum += item
print(sum)
mysum()
其他类型会报错
可以使用参数解包功能
#关键字参数:形参和实参位置必须保持一致,字典可以没有,它会默认为空字典,返回为None
函数的返回值
返回值:函数运算的结果,当还需要进一步操作是,用return来返回
函数的执行结果,如果没有返回值,默认为None
一旦遇到return,函数执行结束,后面的代码不会执行
多个返回值的时候,python会帮我们封装成一个元组类型
def mypow(x,y=2):
# print(xy,x+y)
return xy,x+y
a = mypow(5,2)
print(a)
print(mypow(5,2))
变量的作用域
局部变量:在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会自动删除
全局变量:定义在函数外的拥有全局作用域,且全局变量可以在整个程序范围内访问
a = 1 #这是一个全局变量
print(‘outside:’,id(a))
def f():
global a #将其函数局部变量a声明为全局变量,这个一般不使用;
a = 5
print(‘inside:’,id(a))
f()
print(a)
print(id(a)) #其函数局部变量a声明为全局变量的存储地址
根据id可以判断出,最后函数外输出的a不是原本函数外的a,而是在函数内重新被定义的a
不声明为全局变量的话,最后输出的a是原本函数外的a,与函数里的a不是同一个变量
练习: