一、形参

在定义函数时,括号内的参数称为形参,特点:形参就是变量名
def foo(x, y):  # x=1,y=2
print(x)
print(y)

二、实参

在调用函数时,括号内的参数成为实参,特点:实参就是变量值
在调用阶段实参(变量值)才会绑定形参(变量名),调用结束后,解除绑定
foo(1,2)

三、参数的分类

1、位置参数

按照从左到右的顺序依次定义的参数

位置形参:必须被传值,并且多一个不行,少一个也不行
                          位置实参:与形参按照位置一一对应

def foo(x, y):
print(x)
print(y) foo(1, 2)

2、关键字实参

指的是按照name=value的形式,指名道姓地给name传值
def xie(name, age):
print(name)
print(age)
xie(name='xiechao', age=18)

3、位置实参与关键字实参混合用要注意的问题

#####关键字实参需要注意的问题是:
def foo(name, age, sex):
print(name)
print(age)
print(sex) foo('egon', 18, 'male')
print('======>')
foo(sex='male', age=18, name='egon')
foo('egon', sex='male', age=18) ####问题一:语法规定位置实参必须在关键字实参的前面
foo('egon', sex='male', age=18) ####问题二:一定不要对同一个形参传多次值
foo('egon', sex='male', age=18, name='egon1') foo('male', age=18, name='egon1')

4、默认形参

在定义阶段,就已经为形参赋值,意味在调用阶段可以不用传值,如果传值的话,就覆盖定义阶段的值
def foo(x,y=1111111):
print(x)
print(y) foo(1,'a') def register(name,age,sex='male'):
print(name,age,sex) register('asb',73)
register('wsb',38)
register('ysb',84)
register('yaya',28,'female')

5、默认参数需要注意的问题

5.1、问题一:默认参数必须放在位置参数之后

def foo(y=1,x):#报错SyntaxError: non-default argument follows default argument
print(x,y) 

5.2、问题二:默认参数只在定义阶段赋值一次,而且仅一次

x = 100

def foo(a, b=x):  #=100
print(a, b) x=111111111111111111111111111111 #再赋值没有用
foo('egon')  

5.3、问题三:默认参数的值应该定义成不可变类型

 

最新文章

  1. 【BZOJ-1911】特别行动队 DP + 斜率优化
  2. shell脚本监控Flume输出到HDFS上文件合法性
  3. django 自定义标签和过滤器
  4. js跳转页面方法(转)
  5. 使用 PHP cURL 提交 JSON 数据
  6. UVa 10129 Play On Words【欧拉道路 并查集 】
  7. [Qt5] 减少dll依赖和大小(特别是webkit的大小和依赖)
  8. [ACdream 1099] 瑶瑶的第K大
  9. git使用命令总结
  10. js备战春招の三
  11. Postman安装与使用
  12. audio元素和video元素在ios和andriod中无法自动播放
  13. ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Memory Type and Attributes
  14. textarea点击蓝色背景,黄色条,input点击黄色条,如何去掉?
  15. vue-router 不重新加载问题
  16. mac 打开整个系统的隐藏文件
  17. ovs加dpdk出现EAL No free hugepages reported in hugepages-1048576kB
  18. CopyOnWriteArrayList对比ArrayList
  19. 【BZOJ】1026: [SCOI2009]windy数(数位dp)
  20. Web API与AJAX:理解FormBody和 FormUri的WebAPI中的属性

热门文章

  1. Vbulletin Used to Show Malicious Advertisements
  2. [Git高级教程(二)] 远程仓库版本回退方法 - 梧桐那时雨 - CSDN博客
  3. 基于keras中IMDB的文本分类 demo
  4. 几道面试题-考察JS的运用
  5. PHP判断一个文件是否能够被打开
  6. hive拉链表取数
  7. 当inline-block和text-indent遇到IE6,IE7
  8. 每日算法之三十四:Multiply Strings
  9. JAVA的一次编译,到处执行,你知道多少?
  10. 利用ajax异步校验验证码(转)