函数定义:函数是具有特定功能的一段代码
分类:内置函数、自定义函数
函数格式:def 函数名():
函数体
函数需要先定义再调用
def hello():#不带参数
n=1
while n<=10:
print(‘helloworld’)
n+=1
def hello(n):#带参数的
# n=int(input(‘输入数字:’))
for i in range(n):
print(‘hello’)
hello(3)#函数调用
带参,有返回值
def add(a,b):
return a+b #返回结果,一旦执行return,函数立即结束,没有指定返回值时,默认返回None
print(add(3,5))
#参数使用
#形参:形式参数,写在定义函数的地方。
#实参:实际参数,定义在函数调用处的参数
#位置参数:函数定义时没有默认值的参数,也叫必传参数,和实参必须一一对应
#默认参数:定义函数时,给参数设置的有默认值,调用时可以不传递,要放在末尾
#关键字参数:调用函数时指定关键字传参
def fi(a,b=7):
print(‘a=’,a)
print(‘b=’,b)
fi(1,3)
fi(b=5,a=9)#使用关键字进行传参
可变长度的参数
#args是一个元组,保存多传的位置参数
#kwargs是一个字典,保存多传的关键字参数
def var_len(a,b,*args,**kwargs):
print(a,b)
print(‘args’,args)
print(‘kwargs’,kwargs)
var_len(1,2,3,name=‘zhangsan’)
def li(a,b):
print(a,b)
lt=[1,2]
li(*lt)#与上面等价,*相当于将序列中的元素展开作为函数参数
def di(x,y):
print(x,y)
dt={‘x’:‘divb’,‘y’:‘bhjv’}
di(**dt)#**展开字典中的键值对转换为关键字参数的形式
def out():#在函数里面还可以定义函数
def inner():#内部函数
print(‘hello’)
inner()
out()
#块级作用域,可以在代码块外部调用定义的变量
if True:
a=1
print(a)
#局部作用域,函数内部定义的变量只能在函数内部使用,在外部使用会报错
def test():
b=10
q=100
#全局变量,可以在函数内部调用全局变量,但是不能在函数内部修改全局变量的值
def test2():
global q #声明使用全局变量
q=200 #相当于重新定义的一个全局变量
print(q)
test2()
print(q)
def wai():
e=500
def nei(): #内部函数可以使用外部函数 的局部变量,丹不能更改局部变量的值
nonlocal e #声明修改外部函数定义的局部变量
e=1000
print(e)
nei()
wai()
#print(isinstance(test,function))#不能使用这种方式判断是否是函数
from inspect import isfunction #判断是否是函数,是函数返回Trur。否则返回False
print(isfunction(test))
a=‘123’
print(callable(test))#判断一个对象能否被调用,能被调用的返回True,函数能被调用,能被调用的不一定是函数
print(callable(a))