day3函数

函数的定义:def 函数名(形参):
函数的调用:函数名(实参)

一、函数:

def func(x,y,z):
    print(x)
    print(y)
    print(z)

函数的调用方法:

func(1,2,3)#位置参数调用  与形参一一对应
func(y=2,z=3,x=1)#参数中有关键字,称为关键字参数调用 与形参的顺序无关
func(1,z=3,y=2)#混合使用时,关键字参数不能在位置参数之前

默认参数:

def func1(x,y=2):
    print(x)
    print(y)
func1(1)
#默认参数特点:调用函数的时候,默认参数非必须传递

运行结果:
在这里插入图片描述

二、非固定参数or参数组:

  1. *args:接受N个(位置参数),转换成元组形式

def test(*args):
    print(args)
#下面两种录入方式,结果相同
test(1,2,3,4,5)
test(*[1,2,3,4,5])

def test1(x,*args):
    print(x)
    print(args)

test1(1,2,3,4,5)#实参1对应形参x,其他的对应元组args

在这里插入图片描述
2.**kwargs:接受N个(关键字参数),转换成字典的形式

def test2(**kwargs):
    print(kwargs)
    print(kwargs["name"])#可以这样通过key来查看value
    print(kwargs["age"])

test2(name="yww",age=22)#关键字参数的形式,录入数据
test2(**{"name":"yww","age":"22"})#字典的形式,录入数据

def test3(name,**kwargs):
     print(name)
     print(kwargs)

test3('yww',age=18,sex='m')#位置参数与关键字参数混合,位置参数一定在关键字参数前面

def test4(name,age=18,*args,**kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)
    logger("TEST4")



def logger(source):
    print("from %s" %  source)

test4('alex',age=34,sex='m',hobby='tesla')
# "alex"为位置参数与name一一对应
# age=34为关键字参数改变了形参age=18
#剩下的 sex 和hobby 为关键字参数 所以录入kwargs字典
# args是一个空元组

在这里插入图片描述
三、局部变量与全局变量
局部变量:作用域在函数内
全局变量:作用域在整个程序
局部变量与全局变量重名的时候,局部变量依然只在函数内有效

school = "Oldboy edu."
def change_name(name):
    global school #global+局部变量 = 修改全局变量
    school = "Mage Linux"
    print("before change",name,school)
    name ="Alex li" #这个函数就是这个变量的作用域
    age =23
    print("after change",name,age)


print("school:",school)
name = "alex"
age = 12
change_name(name)
print(name)
print(school)
print("age",age)

在这里插入图片描述
2.当全局变量为除了(字符串,整数)也就是(列表,字典,集合),局部变量可以直接改全局变量,不用加global。

names = ["Alex","Jack","Rain"]

def change_name():
    names[0] = "金角大王"

    print("inside func",names)

change_name()
print(names)

在这里插入图片描述
四、递归
`def calc(n):
print(n)
if int(n/2)>0:
return calc(int(n/2))
print(n)

calc(10)

`在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值