首页 > 技术文章 > day9 函数创建调用及参数

Ebola- 2017-12-26 19:04 原文

#修改文件
#python中文件不能修改 想要实现就需要换个思路,先删除原文档再新建文档,命名
# with open('下午好.txt','r',encoding='gbk') as f, open('下午好.bak','w',encoding='utf-8') as f1:
# for i in f:
# if 'gaojiantao' in f:
# f = f.replace('gaojiantao','哇哈哈')
# f1.write(i)
# import os
# os.remove('下午好.txt')
# os.rename('下午好.bak','下午好')
# 函数的创建 def return
# 顺序 位置参数,*args ,默认参数,**kwargs 固定排序!!!
站在实参的角度上:
按照位置传参
按照关键字传参
混着用可以:但是 必须先按照位置传参,再按照关键字传参数
不能给同一个变量传多个值
站在形参的角度上
位置参数:必须传,且有几个参数就传几个值
默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的
定义函数的时候:
位置参数 : 直接定义参数
默认参数,关键字参数 :参数名 = '默认的值'
动态参数 : 可以接受任意多个参数
参数名之前加*,习惯参数名args,
参数名之前加**,习惯参数名kwargs
顺序:位置参数,*args,默认参数,**kwargs
动态参数有两种:可以接受任意个参数
*args : 接收的是按照位置传参的值,组织成一个元组
**kwargs: 接受的是按照关键字传参的值,组织成一个字典
args必须在kwargs之前
  默认参数和动态参数之前的顺序关系:位置,*args,默认参数,**kwargs
动态参数的另一种传参方式

def fanc(a,b,*args,sex = '男',**kwargs ):
print(a,b,args,sex,kwargs ) #args kwargs 打印不带* !!!!!
print(a, b)
print(args)
print(kwargs)
return a,b,args,sex,kwargs #用一个标量接收多个变量返回一个元组 print(a1) (12, 21, (22, (1, 2, 3, 4)), 'nv', {'name': 'asdjhfiue', 'ju': 'dhuiwq'})
#a1 = fanc(12,21,22,(1,2,3,4),sex = 'nv',name = 'asdjhfiue',ju = 'dhuiwq')
a1,a2,a3,a4,a5 = fanc(12,21,22,(1,2,3,4),sex = 'nv',name = 'asdjhfiue',ju = 'dhuiwq') #返回几个值用几个值接收,相当于分别赋值
print(a1) #12
print(a2) #21
print(a5) #{'name': 'asdjhfiue', 'ju': 'dhuiwq'}
# def func(*ages):
# print(ages)
# func([1,2,3,45,5]) #返回值([1, 2, 3, 45, 5],) 整体进去*ages将元素转化为元祖
#列表————元素————元组
# l1 = [1,2,34,5]
# func(*l1) #(1, 2, 34, 5) 返回元祖 列表*l1中的元素打散,把列表转为元祖
#字典————关键字参数————字典
# def func1(**kwargs):
# print(kwargs)
# dic = {'v':'was','a':'dwe'}
# func1(**dic,name = 'sadfh') #{'v': 'was', 'a': 'dwe', 'name': 'sadfh'} 将字典打散为关键字参数

推荐阅读