python 函数的参数和传递方式

函数的参数:

  • 形参:函数中出现

  • 实参:主调函数中使用

  • 实参传递的内容可以是任何数据类型,

  • 参数传递:关键字传递 位置传递

  • 关键字传递和位置传递可以混用,但是关键字传递后面不能再有位置参数,换言之就是混用时只能是最后一个参数用关键字传递
    fn(1,2,c=10) 可以
    fn(1,b=2,3) SyntaxError: positional argument follows keyword argument
    fn(c=2,1,3) 也是错的

  • 有函数fn()

  • fn 是函数本身,打印fn打印的是函数的ID

  • fn() 是调用函数,进行函数的相关操作

函数的传递方式

  • 形参与实参
  • 传递的是可变对象与不可变对象
  • 传递时是改变了可变对象的地址还是只改变了可变对象中的某个值
  • 调用函数,函数的实参是可变对象的两种情况:
  • 在函数中为形参赋值:此时改变的只是形参,而实参并未改变
  • 在函数中改变修改形参的值,此时形参和实参的ID一样,此时的改变会传递到实参中
  • 还有一点,形参并未在全局赋值,在全局调用时会报错:
    在这里插入图片描述
def fn5(a):
    a[0]=1
    #a=[1,2,4]
    print(a,id(a))

c = [2,2,3,4,5]
fn5(c)
print(c,id(c))
结果:
[1, 2, 3, 4, 5] 16612728776
[1, 2, 3, 4, 5] 16612728776

由此可见,改变可变对象的内容时,这个改变传递了

def fn5(a):
    #a[0]=1
    a=[1,2,4]
    print(a,id(a))

c = [2,2,3,4,5]
fn5(c)
print(c,id(c))
结果:
[1, 2, 4] 648694916616
[2, 2, 3, 4, 5] 648694079432

当为形参赋值时,形参的ID在函数内有效,出函数之后就无法使用了

如果实参传递的是c.copy
那么改变的C是不变的

def fn5(a):
    a[0]=1
    #a=[1,2,4]
    print(a,id(a))

c = [2,2,3,4,5]
fn5(c.copy())
print(c,id(c))
结果:

[1, 2, 3, 4, 5] 90372302344
[2, 2, 3, 4, 5] 90371465160

复习

  • 可变对象 集合的运算
  • 可变对象 改对象和改变量 什么时候改对象,什么时候改变量
  • a[10]=1 改对象
  • a=10 改变量 a=[1,2,3] 改变量
  • 集合 交并补 差

函数

  • 函数也是对象 这个对象里面可以保存一些可以执行的代码

  • 可以多次调用

  • 函数的语法: def 函数名(形参1,2,3)

  •   						代码块
    
  • 函数加括号 表示调用函数,不加括号表示函数对象

  • 函数的参数: 形参 实参

  • 多个形参要用逗号隔开

  • 参数传递 位置传递和关键字传递

  • 默认值:定义形参时定义默认值,当用户没有传递默认值

  • 实参类型: 实参可以传递任意类型的对象,

  • 函数传递 可变对象和不可变的对象

  • 不定长参数:

  • 结论即可 处理位置参数 (//*)处理关键字参数

  • 解包

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值