跟着太白老师学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 关键词开头,空格之后接函数名 ...
随机推荐
- Android Hook神器:XPosed入门与登陆劫持演示
前段时间写了一篇关于Cydia Substrate广告注入的文章,大家都直呼过瘾.但是,真正了解这一方面的同学应该知道,其实还有一个比Cydia Substrate更出名的工具:XPosed. 不是因 ...
- Unity Obstacle分析
NavMeshObstacle Normal 通过设置半径和高度来设定障碍物,配合NavMesh使用. 优点: 简单易用,效率高 动态生成 缺点: 可能会被主角穿过,但目前没发现 形状固定为圆柱 Na ...
- kmp学习小结
KMP 简要说明 \(kmp\)是一个非常神奇的东西.它的\(fail(next)\)数组\(f[i]\)就表示\(1\)~\(i\)这个串的最长公共前缀后缀长度.根据这个\(fail\)数组,在匹配 ...
- POJ3422 Kaka's Matrix Travels 【费用流】*
POJ3422 Kaka's Matrix Travels Description On an N × N chessboard with a non-negative number in each ...
- Roslyn 入门:使用 Visual Studio 的语法可视化窗格查看和了解代码的语法树
使用 Visual Studio 提供的 Syntax Visualizer,我们可以实时看到一个代码文件中的语法树.这对我们基于 Roslyn 编写静态分析和修改工具非常有帮助.本文将介绍如何安装它 ...
- 应该抛出什么异常?不应该抛出什么异常?(.NET/C#)
我在 .NET/C# 建议的异常处理原则 中描述了如何 catch 异常以及重新 throw.然而何时应该 throw 异常,以及应该 throw 什么异常呢? 究竟是谁错了? 代码中从上到下从里到外 ...
- 《DSP using MATLAB》示例Example 9.7
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- scrapy 的基本命令
scrapy stratproject projectname ##创建一个项目 scrapy genspider myspidername fider ##创建一个spider文件 scrapy ...
- 【angularJS】MVC
angularJS中的mvc是借助于$scope实现的. View(视图), 即 HTML. Model(模型), 当前视图中可用的数据.scope 是模型.scope 是一个 JavaScript ...
- tar 打包处理文件
基本格式:tar [Options] file_archive //注意tar的第一参数必须为命令选项,即不能直接接待处理文件 Option是由三部分组成,分别是操作类型(创建,查看,解压),压缩处理 ...