Python传参

本文介绍了Python中函数参数的传递方式,包括不可变类型如整数、字符串、元组,以及可变类型如列表和字典。不可变类型在函数内部修改不会影响外部值,而可变类型则可以在函数内改变。此外,还讲解了函数参数的四种形式:必备参数、关键字参数、默认参数和不定长参数。对于全局变量和局部变量的区别,以及如何通过`global`关键字使用全局变量也进行了阐述。
摘要由CSDN通过智能技术生成

在给函数传递参数的时候可以分为不可变类型和可变类型,这就类似与C++的按值传递和按引用传递,其中可变类型能在定义的函数体内改变值,但是不可变类型是即使你在函数体内修改了改值,在这函数体外部也不会改变,其本质是在传递该参数的时候复制了一个变量,这个变量指向实际的值。

不可变类型

常见的不可变类型有整数、字符串、元组。

def ChangeInt( a ):
    a = 10
b = 2
ChangeInt(b)
print (b) # 结果是 2

查了下资料,如果是不可变类型的话,他就是不可变的,没有办法让他在函数体外更新值,但是!!!你可以把他变为可变类型。
还要一种方式就是你可以设一个返回值,将返回值赋给这个值。

可变类型

常见的可变类型有列表和字典

def ChangeInt( a ):
    a[0] = 10
b = [2]
ChangeInt(b)
print (b[0]) # 结果是 10

传参的参数

必备参数

def printme( str ):
   "打印任何传入的字符串"
   print (str)
   return
printme() #报错

如果定义的函数体内需要参数,则一定要传对应数量的参数

关键字参数

def printinfo( name,age = 35):
   "打印任何传入的字符串"
   print ("Name: ", name)
   print ("Age ", age)
   return
printinfo( age=50, name="miki" )
printinfo( name="miki" )

这说明了参数的顺序并不重要,可以自己规定顺序

默认参数

def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print "Name: ", name
   print "Age ", age
   return
printinfo( age=50, name="miki" )
printinfo( name="miki" )

这跟C++中的默认参数一样,没传改参数的话,默认采用原先定义的参数。
跟C++一样,默认参数位置应该在参数列表的尾部,不能def printinfo( age = 35,name):这样定义,会报错。

不定长参数

def printinfo( arg1, *vartuple ):
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print var
   return
printinfo( 10 )
printinfo( 70, 60, 50 )

加了星号(*)的变量名会存放所有未命名的变量参数。

全局变量和局部变量

global_var=0
def test():
    #print(global_var) #报错,在函数体内找不到这个值
    global_var=1
    print(global_var) #1

test()
print(global_var) #0
global_var=0
def test():
    global global_var #将该变量声明为全局变量
    global_var=1
    print(global_var) #1
test()
print(global_var) #1
型有哪些?如何进行参数传递? Python传参的类型有四种:位置参数,关键字参数,默认参数和可变参数。 位置参数:按照函数定义中形参的位置进行传递,与形参的名称无关。 关键字参数:按照形参的名称进行传递,与形参的位置无关。 默认参数:在函数定义时指定参数的默认值,如果调用时传递了参数,则使用传递的值,否则使用默认值。 可变参数:有两种,分别是可变位置参数和可变关键字参数。可变位置参数在函数定义时以*args形式声明,接收任意数量的位置参数;而可变关键字参数在函数定义时以**kwargs形式声明,接收任意数量的关键字参数。 参数的传递方式:位置参数和关键字参数可以混合使用,但是位置参数必须在关键字参数之前传递。例如: ``` def add(x, y=1, z=2): result = x + y + z return result add(1, z=3) # 返回 5 ``` 这里函数add()有三个参数,其中y和z指定了默认值。我们可以像这样传递参数:add(1, z=3),这里指定了x为1,z为3,y使用默认值1. 可变参数可以使用*和**运算符来实现参数的解包,例如: ``` def add(*args): result = 0 for arg in args: result += arg return result numbers = [1, 2, 3] add(*numbers) # 返回 6 def print_info(**info): for key, value in info.items(): print("{}: {}".format(key, value)) user_info = {"name": "Alice", "age": 18} print_info(**user_info) # 输出 name: Alice, age: 18 ``` 这里函数add()接收任意数量的位置参数,函数print_info()接收任意数量的关键字参数。我们可以使用*运算符将列表或元组解包作为位置参数传递给函数,使用**运算符将字典解包作为关键字参数传递给函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值