定义函数
def student(name): #def 函数名():
return name #函数体
形参和实参
def student(name) #name就是形参,代表函数完成其工作所需的一项信息
#调用函数
student(jun) #jun就是一个实参,也就是函数调用时传递给函数的信息
返回值:
def login(user,pas=1213):
print(user,pas)
re=login('gan')
print(re)
#运行一下这个代码,发现返回None,为什么呢?
#原因在于这个函数没有返回值,所以默认返回为None
#说一下return的作用
def my():
for i in range(50):
return i
print(my()) #运行结果只返回一个0,原因何在?
#return有两个作用
#1、结束函数,只要在函数里遇到return,函数立即结束运行
#2、返回函数运行结果
#函数可以返回多个值
def my3():
a=1
b=2
c=3
return a,b,c
b,c,d=my3() #用三个值来接收返回的三个值
s=my3() #用一个值s来接收但会的三个值
print(b,c,d) #1 2 3
print(s) #(1, 2, 3),一起接收,返回的就是元组
#练习,写一个判断是否是小数的函数
#首先,小数有且仅有1个小数点,然后小数点左右两端的值都是整数,
#负小数就是有且仅有一个-
def check_float(f):
f=str(f)
if f.count('.')==1:
s_split=s.split('.') #分割小数点两端
left,right=s_split
if left.isdigit()and right.isdigit():
return True
elif left.starwith('-') and left[1:].isdigit() and right.isdigit()
return True
else:
return False
#注意,else是和if在一个等级的
传递实参:
1、位置实参、必填参数
2、默认值
3、可变参数
4、关键字参数
#默认值参数:就是在没有传参数的时候,会按默认值运行
def login(user,pas=1213): #pass=1213,这个就是默认值参数,
print(user,pas) #当没有给该参数传值时,默认值为1213
login('gan') #调用结果时,就写了一个必填参数,默认值没有填,结果返回如下
#gan,1213
#可变参数:
def para(*args): #格式是函数名(*args)
print() #运行一下,结果是()
def para(*num)
print(num)
para()
para(111)
para(123,333,445)
#运行一下上述代码,看看结果
#总结,可变参数不是必传的,传入的元素全部放在了一个元组里,不限制参数个数
#用在参数个数比较多的情况下
#关键字参数
def para1(**kwargs): #格式是**
def send_sms2(**kwargs):
print(kwargs)
send_sms2()
send_sms2(name='xiaohei',sex='nan')
send_sms2(addr='北京',country='中国')
#总结:关键字参数将传入的元素放在了字典里,不限制参数个数,传参用的是K-V格式
#参数不是必传的
#举个栗子:
def my(name,country='China',*args,**kwargs):
#参数位置必须按照这样 1、位置参数 2、默认值参数 3、可变参数 4、关键字
print(name)
print(country)
print(args)
print(kwargs)
my('xiaojun','Japan','beijing','天通苑',color='红色',age=32)
#运行这段代码,结果是
#xiaojun
#Japan
#('beijing', '天通苑')
#{'color': '红色', 'age': 32}
全局变量与局部变量
name='wang' #全局变量
def get_name():
name='zhang' #局部变量
print(name) #结果为zhang
def get_name():
print(name)
#运行一下,为什么不报错呢?
#返回结果为wang,因为,在自己的函数内部里,没有找到name,但函数外部
#有一个全局变量name,全局变量在哪一个函数都能用,所以此时返回wang
name='wang'
def get_name():
global name='hai' #global声明 改的name为全局变量,值为'hai'
print(name)
#运行结果为'hai'
#注意:如果要修改一个列表和字典,是不需要声明的
递归函数
递归函数就是自己调用自己,最大次数是999次
def test1():
num = int(input('please enter a number:'))
if num%2==0:#判断输入的数字是不是偶数
return True #如果是偶数的话,程序就退出了,返回true
print('不是偶数请重新输入!')
return test1()#如果不是偶数的话继续调用自己,输入值
print(test1())#调用test