函数的定义和调用 #函数的定义的格式 #def 函数名(参数[可选]): #功能代码的实现 #定义函数不会调用 def show (): print ( "我叫张三丰,年龄18" ) #调用函数 #函数名(参数) #定义带有参数的函数
函数的定义和调用
#函数的定义的格式#def 函数名(参数[可选]):
#功能代码的实现
#定义函数不会调用
def show():
print("我叫张三丰,年龄18")
#调用函数
#函数名(参数)
#定义带有参数的函数
#name,age:形式参数(函数定义带有的参数叫形式参数)形参
def show_msg(name,age):
print(name,age)
#调用带有参数的函数"张三",20:实际参数(实参)
show_msg("张三",20)
函数的四种类型
#无参数无返回值得函数def show():
#函数'体里面的代码执行完毕,返回到函数的调用出
print("大家好,今天天气可冷了")
#函数调用
show()
#无参数有返回值的函数
def show():
result = 10
#带着数据返回到代码的调用处
return result
value = show()
print(value)
#有参数无返回值的
def show(name,age):
print("我叫:%s 年龄:%d" %(name,age))
show("张三",19)
#有参数有返回值的
def show_msg(name,age):
msg = "我叫:%s 年龄:%d" %(name,age)
return msg
result = show_msg("李四",40)
print(result)
调用顺序
#定义函数是不会执行函数体里面的代码def shwo():
print("哈哈")
print("呵呵")
shwo()
print("lll")
#总结:函数调用的时候会返回到函数的定义处,执行函数体里面的代码
#执行完毕,返回的调用处
全局变量
#全局变量:在函数外定义的变量叫做全局变量#特点:全局变量可以在不同的函数里面使用
score = 100
def show():
#定义了一个局部变量,只不过这个局部变量和全局变量的名字一样
# score =99
#修改全局变量
global score#表示要对全局变量score修改数据
score = 99
print(score)
show()
print(score)
函数传参方式:
#调用函数的传参方式:1.使用位置传参2.使用关键字传参def show(name,age):
print(name,age)
print("架架")
#使用位置参数方式传参:必修按照函数的参数顺序去传参
show("张三",18)
#positional argument:丢失了一个位置参数
#使用关键字方式传参
#使用关键字传参,可以不按照函数参数的顺序去传参
show(age=19,name="李四")
#前面使用关键字传参,后面使用位置传参(不可以的)
# show(age=19,"张三")
#前面使用位置传参,后面使用关键字传参可以使用
#关键字传参,必须放在最后
show("冯七",age=10)
不定长参数:
#函数的不定长参数:1.不定长位置参数2,不定长关键字参数#不定参数:调用函数的时候不确定传入多少个参数
#可能是0个或者多个
#--------------不定长位置参数的定义及调用--------------
#*args代表不定长位置参数,约定俗称起的名字
def sum_num(*args):
#提示:args:会把调用函数传入的位置参数封装到一个元组里面
print(args,type(args))
#计算结果变量
result = 0
for value in args:
result += value
return result
result = sum_num(1,2,3,4,6,8)
print(result)
# sum_num(a=1,b=2)
#------------不定长关键字子参数函数的定义及调用-------
#**kwargs 代表不定位置参数
def show_msg(**kwargs):
print(kwargs,type(kwargs))
for key,value in kwargs.items():
print(key,value)
#调用不定长位置参数的函数
show_msg(a=1,b=2)
#使用位置参数的方式调用不定长关键字参数的函数
# show_msg(1,2)
# def pachong():
# #1.232323
# data = "asdasd"
# return data
#
#
# data = pachong()
# print(data)
#爬虫:只能抓取用户有权限能看见的数据
不定长位置参数的使用
#定义不定长位置参数def show_msg(*args):
#(1,2)
print(args)
#定义不定长位置参数
def show(*args):
# print(args,type(args))
# (1,2)
print(args)
#解决办法:对元组进行拆包
show_msg(*args)
# show_msg(args)
show(1,2)
函数的参数的高级使用
def show_msg(name,age,*args,**kwargs):print(name,age,args,kwargs)
#不能使用下列方式调用,因为前面使用了关键字传参,后面不能使用位置传参
# shwo(name="李四",age=18,1,4,c=1,b=2)
# shwo("李四",20,1,2,3,4,a="苹果",b="香蕉")
#可不可以
def show(*args,name,age,**kwargs):
print(args,name,age,kwargs)
#kwargs必须放置在后面(不定长关键字参数放置在后面)
show(1,2,name="李四",age=12,aa=1,bb=2)
#注意点:*后面的参数,必须使用关键字传参方式
def callAble(address,sex,*,name,age):
print(address,sex,name,age)
#使用位置传参的方式调用函数
callAble("上海","男",name ="刘彦",age=20)
不定长关键字函数的使用
def show_msg(**kwargs):print(kwargs)
#定义不定长关键字函数
def show(**kwargs):
print(kwargs)
#使用了位置传参的方式调用函数
# show_msg(a=kwargs)
# 对字典进行拆包
show_msg(**kwargs)
show(a=1,b=2)