Python基础之函数参数

一、实参

  1、实参分类:

   

  2、实参基础代码:

  

def fun01(a, b, c):
    print(a)
    print(b)
    print(c)

# 位置传参:实参与形参的位置依次对应
fun01(1, 2, 3)

# 序列传参:用*将序列拆分后与形参的位置依次对应
fun01(*[4, 5, 6])

# 关键字传参:实参根据形参的名称进行对应
fun01(b=2, a=1, c=3)

# 字典传参:用**将字典拆分后与形参的名字进行对应.
fun01(**{"b":20,"c":"cc","a":1.5})

# 默认参数
def fun02(a = 0, b = 0, c = 0):
    print(a)
    print(b)
    print(c)

# 不写参数,使用默认值.
fun02()
fun02(1)
fun02(*[2,3])
# 关键字传参 与 默认传参相结合,可以让调用者只传递自己需要的信息.
fun02(b = 20)
fun02(**{"c":"cc"})

  3、示例练习:定义函数,根据天/小时/分钟,计算总秒数

  

def get_total_second(day=0, hour=0, minute=0):
    return day * 24 * 60 * 60 + hour * 60 * 60 + minute * 60


s01 = get_total_second(1, 1, 1)
s02 = get_total_second(1, 1)
s02 = get_total_second(hour=2)

二、形参:

  1、形参分类:

  

  2、形参基础代码:

  

# 默认参数
def fun02(a = 0, b = 0, c = 0):
    print(a)
    print(b)
    print(c)

# 不写参数,使用默认值.
fun02()
fun02(1)
fun02(*[2,3])
# 关键字传参 与 默认传参相结合,可以让调用者只传递自己需要的信息.
fun02(b = 20)
fun02(**{"c":"cc"})


# 位置形参
def fun01(a, b, c):
    pass


# 星号元组形参
def fun02(*args):
    # 对于方法内部而言,就是元组
    # 对于调用者而言,可以传递数量无限的位置实参.
    print(args)


# fun02()
# fun02(1)
# fun02(1,2,3,4)

# 命名关键字形参:强制实参使用关键字传递.
# a,b 是命名关键字形参
def fun03(*, a, b):
    print(a)
    print(b)


# b 是命名关键字形参
def fun04(*args, b):
    print(args)
    print(b)


# fun03(a = 1,b = 2)
fun04(3, 44, 3, b =22)


# 双星号字典形参
def fun05(**kwargs):
    # 对于方法内部而言,就是字典,
    # 对于调用者而言,可以传递数量无限的关键字实参.
    print(kwargs)


fun05(a=1, b=2)


# 调用
def fun06(*args, **kwargs):
    print(args)
    print(kwargs)


# 数量无限的位置实参,数量无限的关键字实参
fun06(1, 2, 3, 4, 5, a="a", b=1.5)


def fun07(a, b, *args, c, d, **kwargs):
    print(a)
    print(b)
    print(args)
    print(c)
    print(d)
    print(kwargs)


fun07(1, 2, 3, 4, 5, d="d", c="c")
fun07(1, 2, 3, 4, 5, d="d", c="c", e="ee")
fun07(1, 2, d="d", c="c")

print(1,2,3,4,5) # 1 2 3 4 5
print(1,2,3,4,5,"#") #   1#2#3#4#5

  3、示例练习:定义函数,整数相加的函数。

  

def add(*args):
    sum = 0
    for item in args:
        sum += item
    return sum

re = add(1,2,3,4,45,43)
print(re)

   4、自定义列表的排序函数

  

def sort(list_target):
    # 传入的是可变类型
    # 修改的是传入的对象
    for r in range(len(list_target) - 1):
        for c in range(r+1,len(list_target)):
            if list_target[r] < list_target[c]:
                list_target[r],list_target[c] = list_target[c], list_target[r]


list01 = [2,4,4,5,6,7]
sort(list01)
print(list01)

  5、英文单词反转,如:   how are you -->you are how

  

def get_words_inversion(words):
    list_words = words.split(' ')
    list_words.reverse()
    str_result = ' '.join(list_words)
    return str_result

words = 'how are you'
words = get_words_inversion(words)
print(words)

 

  

 

posted @ 2019-04-10 18:41  一如年少模样  阅读(319)  评论(0编辑  收藏  举报