【PYTHON】函数、位置参数与默认参数、可变参数与关键字参数、全局变量

函数

在python中的变量不用声明数据类型,定义函数同理,不用定义函数的数据类型来确定返回的数据

与在其他语言中一样,函数必须先定义再调用,碰到第一个return时结束函数,该return后面的不再执行,用一个return返回多个数据时默认用元组装着传回去

#用def定义函数,记得一定有冒号,缩进表示在同一代码块
def test() :
    print('hello world')

位置(必选)参数、默认参数

在定义函数时声明的参数,调用函数时根据位置传入参数。若函数有多个参数,则可以设置右边的参数带有默认值,则在调用的时候只需传入必须参数

必须参数(变化大)在默认参数(变化小)的左边,默认参数必须指向不变的对象,不能是声明一个空列表或者空字典这种

# 定义函数时声明的位置参数
def test(x):
    return x+2

test(2)        #调用时必须传入

# 定义带多参数的函数
# 必选参数在最左边,右边的参数可设置为默认参数
# 在调用函数时,右边的参数不传入则使用默认值
def student(num, room='first'):
    print('number is', num)
    print('room is', room)

student(10)    # 调用只传入必须参数,class为默认值first

student(11,'two') # 传入了两个参数,按位置传入,num为11,room此时有传入为'two'

可变参数 *参数

即传入的参数是可变的。

定义函数时的 *参数,把位置参数以外的参数组装为一个tuple传入,该tuple可以为空。

调用函数时的 *参数,把一个list或tuple中的元素作为可变元素传入,此时会把元组解包依次传入位置参数(但数量要一致)。

# 定义函数,使用可变参数,调用函数时传入的参数打包为一个tuple并用numbers变量接收
def total(*numbers):
    sum = 0
    for n in numbers
        sum = sum + n
    return sum

def total_1(num, score):
    print num
    print score

total(90, 60, 89)    #函数调用,传入的90,60,89被打包为一个tuple

tuple_num = (60, 87, 90)    #已有一个tuple
total(*tuple_num)    #把tuple_num中所有元素作为可变参数传入

total_1(*tuple_num)    #作为可变参数,传入一个没有声明可变参数的函数
                       # *函数会把该元组解包,依次传入位置参数

关键字参数 **参数

也可以理解为是一种可变参数

定义函数时的**参数,收集未匹配的位置参数,组装为一个dict传入

调用函数时的**参数,对dict的解包,把dict对象中的每个键值对依次转为各组关键字参数传入函数

【*参数必须在**参数前】

全局变量

python中的全局变量和局部变量的定义和其他语言的一样,不同之处在于:在函数中修改全局变量时要先声明global

x = 100    #声明全局变量

def test():
    print(x)    #直接调用全局变量
    x=200        #这里没声明global看作时局部变量x
    print('new ',x)

def test_2():
    global x    #声明这里使用的是全局变量x
    x=500
    print(x)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值