Python函数定义及传参

版权声明:本文为博主原创文章,未经博主允许不得转载。不准各种形式的复制及盗图 https://blog.csdn.net/qq_26816591/article/details/88219126
# 函数
# 区分大小写的 不能用内置变量名
# 创建的格式
def f1(x, y):
    print('hello world')
    print(x + y)


f1(8, 9)

import time


def f2(x, y):
    # 在文件中 写入 系统当前时间
    time_format = '%Y-%m-%d %X'
    time_current = time.strftime(time_format)
    with open('慎独', 'a', encoding='utf8') as f:
        f.write('\n当前时间 %s月 you compute %d + %d = %d\n' % (time_current, x, y, x + y))


# 注意占位符 有序 按次序接收参数

f2(6548, 5464)


def f3(name, age):
    print('%s %d' % (name, age))


# 如果不按顺序传入参数,就应该指定变量赋值
f3(age=30, name='joe')


def f4(name, age, sex='male'):
    print('%s %d %s' % (name, age, sex))


# 如果不按顺序传入参数,就应该指定变量赋值 将常用变量赋值 只有不同答案时才修改
f4(age=30, name='joe')
f4(age=30, name='cloud', sex='female')


# 不定长参数 方式一 *args 传入参数会变成元组
def f5(*args):
    print(args)
    num = 0
    for i in args:  # 对元组进行循环遍历
        num += i
    print(num)


f5(1, 2, 3, 4, 5)


# 不定长参数 方式二 **kwargs 会把传进来的一个个键值对,生成字典 传进来的单个值生成元组
def f6(*args, **kwargs):
    print(args)
    print(kwargs)

    for i in args:  # 元组的遍历
        print(i)

    for i in kwargs:
        print('%s %s' % (i, kwargs[i]))  # 字典的遍历


# 要注意 *args 与 *kwargs 的顺序
f6('joe', 40, 'male', job='IT', hobby='girls')


# 该句会报错,因为没有args 后 kwargs 传入参数
# print_IT('joe', 40, 'male', job='IT',30, hobby='girls')

def f7(name='joe', *args, **kwargs):
    print(args)
    print(kwargs)


f7('zhangsan', 'lisi', hobby='girls')  # 按顺序优先匹配最左面的


# 变量 带有默认值的变量 不定长变量 不定长元组 (优先级从左到右)
def f8(name, age=22, *args, **kwargs):  # 优先级顺序 从左到右
    pass

要点:

  • def function(): 函数定义格式
  • 获取当前系统时间 time.strftime('%Y-%m-%d %X') 注意导入time 库
  • 占位符 按次序接收参数('%s,%d,%f') %(str,num,float
  • 参数的传入,要按照定义顺序,如果不按定义顺序,应该指定变量赋值 f(name='joe',age=18)
  • 参数的传入,不一定非得传入函数定义参数个数,可以采用给定初始值的方式,给定初始值得方式的参数,可以不传入
  • 参数的传入,参数个数不定长,可以采用 方式一:f(*args) 方式二:f(**kwargs)
  • f(*args) 可以传入不定长元素,生成元组。f(**args)可以传入不定长键值对,生成字典。
  • 如果同时采用f(*args,**kwargs) 就需要依据定义顺序进行传入参数。
  • 定义函数时,最好采用优先级顺序定义参数,尤其是含有不定长参数。变量、带有默认值的变量、不定长元组元素、不定长键值对。

猜你喜欢

转载自blog.csdn.net/qq_26816591/article/details/88219126