函数的最主要的目的:封装一个功能

函数的优点:

减少代码的复用率, 增加代码的阅读性

def my_len(arvg):  # arvg 形参  my_len函数名,应该具有代表性,让你一看就明白
# 函数体
count = 0
for i in arvg:
count += 1
return count
print(my_len(s)) # s实参

return 特点:遇到return结束程序, 返回一些信息

如果当只有一个返回值时,返回是什么就是什么类型的

如果当有多个返回值时,将返回一个元组,元组里是需要返回的值

def fun1():
a = 1
b = 2
c = a + b
d = 'alex'
return c, d
print(fun1())
>>>(3, 'alex')

函数传参:

#实参    函数执行者实际的参数

1.位置参数

2.关键字参数

3. 混合参数

1.位置参数:按照位置一一对应

def fun2(a, b, c):
print(a, b, c) fun2(1, 2, 3) >>> 1 2 3

2 关键字参数: 按照所给参数一一对应

def func3(x, y):
return x, y
print(func3(y=1, x=2)) >>>>(2, 1)

3. 混合参数 由位置参数和关键字参数组成, 关键字参数一定要在位置参数的后面

def func4(x, y, z):
return x, y, z
print(func4(1, z=2, y=3))

形参

1.位置参数

2.默认参数

1 位置参数: 按照位置一一对应

def func5(x, y):
return x + y print(func5(1, 2))

2. 默认参数,如果不传,就默认使用,函数里的默认值,如果传就使用传入的值,默认值设置一般考虑使用量比较多的情况

def login(name, sex='男'):
f = open('a1.txt', encoding='utf-8', mode='a') #打开文件写入
f.write('{}|{}\n'.format(name,sex))
f.close() while True:
content = input('请输入姓名和性别,默认为Q,按,分隔, 按Q退出')
name, sex = content.strip().split(',')
if name.upper() == 'Q':
break
if sex: #如果有值,就传入
login(name, sex)
else: #没有值,就默认使用sex='男'
login(name)

默认参数的注意事项,这里有坑

def func6(x, l1=[]):
l1.append(x)
return l1
tag_1 = func6(1)
print(tag_1, id(tag_1))
tag_2 = func6(2)
print(tag_2, id(tag_2)) >>>>

[1] 4612744
[1, 2] 4612744


我们可以发现两次执行时的l1可变参数,指向的是同一个内存地址,因此1和2都被添加到同一个l1中,所以在使用默认参数的时候,最好不要使用可变数字类型,不可变数字类型包括数字,字母,布尔值,元组,一般都使用前3个来设置默认参数.

如果非要是使用,我们需要使用 l = [],重新复制,更换 l 的地址

def func6(x, l=[]):
l = []
l.append(x)
return l
tag_1 = func6(1)
print(tag_1, id(tag_1))
tag_2 = func6(2)
print(tag_2, id(tag_2))

三元运算 是一种判断的简便写法

def func7(x, y):
return x if x > y else y print(func7(1, 2))

最新文章

  1. Sql Server本地高版本备份数据备份至远程低版本数据库方法
  2. weex 小结--内建模块
  3. 在vCenter5.5中为用户创建角色,管理虚拟机
  4. Python缩进
  5. 重新想象 Windows 8 Store Apps (71) - 其它: C# 调用 C++
  6. Android 电池电量进度条,上下滚动图片的进度条(battery)
  7. P3384: [Usaco2004 Nov]Apple Catching 接苹果
  8. unity发布ios游戏总结
  9. CodeSmith生成实体的分页读取规则
  10. 纯CSS3美化单选按钮radio
  11. Java中对整数格式化
  12. 【BZOJ2754】喵星球上的点名(AC自动机)
  13. (一〇一)集成静态库RHAddressBook实现OC访问通讯录
  14. springdata 动态查询之分页
  15. Springboot2新特性概述
  16. Invalid tld file: "/WEB-INF/tags/xxxt.tld", see JSP 2.2 specification section 7.3.1 for more details
  17. 3.Zuul-过滤器
  18. HTML翻转菜单练习
  19. 计算N个点和M个点之间的距离
  20. 使用spss做方差分析

热门文章

  1. Canvas 与 SVG 的区别
  2. VMWare安装Ubuntu及配置开发环境遇到的问题集
  3. 读《the facebook effect》
  4. ubutun Sogou输入法安装
  5. [转]50个很棒的Python模块
  6. [MEF]第02篇 MEF的导入导出契约
  7. javascript把json串转成对象
  8. 使用 lego生成 Let's Encrypt 证书
  9. oracle之 12.1.0.1.0 C 在 linux 7 上安装报错处理
  10. (二)Fiddler抓取Firefox、Chrome浏览器上的https协议