版权声明:本文为博主原创文章,未经博主允许不得转载。不准各种形式的复制及盗图 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) 就需要依据定义顺序进行传入参数。
- 定义函数时,最好采用优先级顺序定义参数,尤其是含有不定长参数。变量、带有默认值的变量、不定长元组元素、不定长键值对。