day10--函数之形参与实参

'''
def fn(形参们):
pass fn(实参们)
'''
# 形参:定义函数,在括号内声明的变量名,用来结束外界传来的值
# 实参:调用函数,在括号内传入的实际值,值可以为常量、变量、表达式或三者的组合 # 注:形参随着函数的调用而产生,随着调用结束而销毁(有特例)
'''

一、实参:调用函数,在括号内传入的实际值,值可以为常量、变量、表达式或三者的组合

  分类: 位置实参和关键字实参

    1.   位置实参:不用明确形参名的传参方式,一定按照位置给形参传值
    2. 关键字实参:必须明确形参名字与值,可以不按照位置传参。

  两种形式混用:

    1.   关键字实参必须出现在位置实参后面
    2. 多个位置实参还按照位置实参传值
    3. 关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序。
def f1(a, b, c):
print(a, b, c) # 位置实参:按顺序传值
# f1(10,20,) # TypeError: f1() missing 1 required positional argument: 'c'
f1(10, 20, 30) # 关键字实参: 可以不按顺序传递,形参按名字取值
f1(a=10, b=20, c=20)
f1(b=20, a=10, c=20) # 两者混合:1.关键字实参必须出现在位置实参之后,
# 2.多个位置实参还是按照位置传参,
# 3.关键字实参为没有从位置实参拿到值的传参,可以不按照位置传参,且优先传入位置实参(*******)
f1(10, 20, c=30)
# f1(10,b=20,30) # SyntaxError: positional argument follows keyword argument
f1(10, b=30, c=20)
# f1(10, b=20, a=20) # f1() got multiple values for argument 'a' 多次传参
f1(10, c=30, b=20)

二、形参:定义函数,在括号内声明的变量名,用来结束外界传来的值。形参随着函数的调用而产生,随着函数的调用而结束(有特例)。

    分类与使用:

  

# -*- coding: utf-8 -*-
"""# 位置形参:""" def fn(a, b, c):
print(a, b, c) # 位置形参可以由位置实参与关键字实参来传参 fn(10, 28, 30)
fn(a=10, b=28, c=30) """默认形参""" # 默认形参具有默认值,用=进行赋值
def fn(a=10, b=20):
print(a, b) fn(20, 30)
fn(a=200, b=300)
fn(200, b=300)
fn(200) # 就给a传值
fn(b=300) # 就给b传值 # 默认形参可以由位置实参,与关键字实参来传值,还可以不传值(不传参数,采用自身默认值)
# 位置形参与默认形参同事存在,。默认形参必须在后面
def f2(a, b, c=10, d=20):
print(a, b, c, d) f2(100, 200, d=300) # def f2(a, b, c=10, d): #SyntaxError: non-default argument follows default argument
# print(a, b, c, d) # 传参依据: 位置形参必须传值,默认形参分情况传值。 """变长位置形参""" # 可变长形参,只能由位置实参来传值
def fn2(*args): # args :参数们
print(args) fn2()
fn2(1, 2, 3) # 可变长形参会以元组形式接受(位置形参与默认形参未接受的完的所有传入的位置实参 def fn3(a, b=10, *args): # args :参数们
print(args)
print(a, b) # 小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参之前,导致默认形参只能由位置实参来传值
# fn3(1, b=10, 100, 200, 3003) # SyntaxError: positional argument follows keyword argument
fn3(1, 20, 100, 200) # 1给a 20 给b 不能用b= 20 传,100 200 给args传值
上一篇:java log日志的输出。


下一篇:责任链模式 职责链模式 Chain of Responsibility Pattern 行为型 设计模式(十七)