跟着太白老师学python 09day 初识函数
函数的最主要的目的:封装一个功能
函数的优点:
减少代码的复用率, 增加代码的阅读性
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))
跟着太白老师学python 09day 初识函数的更多相关文章
- 跟着太白老师学python day11 函数名的应用 globals(), locals()
1. 函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> ...
- 跟着太白老师学python day10 函数嵌套, global , nonlocal
函数嵌套: 第一种嵌套方法 def func(): count = 123 def inner(): print(count) inner() func() 第二种嵌套方法 count = 123 d ...
- 跟着太白老师学python 10day 函数的动态参数 *args, **kwargs, 形参的位置顺序
1. *args 接收实参的位置参数, **kwargs接收实参的关键字参数 def func(*args, **kwargs): print(args, kwargs) func(1, 2, 3, ...
- 跟着太白老师学python day11 可迭代对象和迭代器
如果对象的属性中有__iter__属性就说明是可迭代的,容器类的数据类型都是可迭代对象 如果对象的属性中既有__iter__属性也有__next__属性,就说明这个对象是迭代器 如何判断一个函数是不是 ...
- 跟着太白老师学python day11 闭包 及在爬虫中的基本使用
闭包的基本概念: 闭包 内层函数对外层函数的变量(不包括全局变量)的引用,并返回,这样就形成了闭包 闭包的作用:当程序执行时,遇到了函数执行,它会在内存中开辟一个空间,如果这个函数内部形成了闭包, 那 ...
- day08 跟着太白老师学python 文件操作
文件操作初识: 1. 文件路径 :d:/护士主妇空姐联系方式 (文件路径不要太过复杂,容易碰到转义字符的问题, 当碰到转义字符时,需要在前面+r,或者采用双斜杠(//)) 2. 编码方式 :utf- ...
- 跟着太白老师学python day10 名称空间,作用域和取值顺序,变量的加载顺序
名称空间分为3种: 1. 全局名称空间 2. 内置名称空间 3. 局部名称空间(临时) 作用域 全局作用域 1全局名称空间 2 内置名称空间 局部作用域 ...
- 跟着老王学Python
亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...
- python基础 (初识函数&函数进阶)
函数基础部分 .什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...
随机推荐
- FTRL笔记
这篇笔记主要参考冯杨的五篇博客:在线最优化求解(Online Optimization).因为对于在线学习方法,稀疏性问题需要特别关注:每次在线学习一个新 instance 的时候,优化方向并不一定是 ...
- Quick 3.3 final 加载ccs的变化
1,用self._topUIWidget = ccs.GUIReader:getInstance():widgetFromJsonFile("mapTopUI.json")就还是用 ...
- PHP面向对象——三大基本特性与五大基本原则
三大特性是:封装.继承.多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 封装是面向对象的特征之一,是对象和类概念的主要特 ...
- WebApi全局异常处理方式
自定义错误消息 public class ErrorMessage:DelegatingHandler { protected override Task<HttpResponseMessage ...
- java 类加载器体系结构
- jquery 操作单选按钮
<input type="radio" name="sex" value="男" />男 <input type=&quo ...
- DBUtils 增删改查例子
sql CREATE TABLE [dbo].[Person] ( , ) NOT NULL , ) COLLATE Chinese_PRC_CI_AS NULL , [age] [int] NULL ...
- 贴一段demo代码,演示channel之间的同步
package main import ( "fmt" "time" ) func deskGoRoutine(index int, userChannel c ...
- LogStation 支持浏览器实时查看日志
我们在logback 分布式日志汇总中已经将日志输出到了all.logs,LogStation支持浏览器实时查看日志,适合研发和运维彼此独立的场景:研发没有服务器权限,却想看日志实时输出.再配合ngi ...
- Data_Structure02-线性表
一.PTA实验作业 本周要求挑3道题目写设计思路.调试过程.设计思路用伪代码描述. 1.顺序表选择一题(6-2,6-3,7-1选一题),代码必须用顺序结构抽象数据类型封装 2.单链表选择一题(6-1不 ...