跟着太白老师学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 关键词开头,空格之后接函数名 ...
随机推荐
- MySQL性能指标计算方式
-- 生成报告文件到/tmp目录中 tee /tmp/mysql_performance_stat.txt -- 统计性能指标前先开启下列参数,该参数使用IS数据库来存放数据库信息,由于使用PS库存放 ...
- Java:浅克隆(shallow clone)与深克隆(deep clone)
Summary 浅克隆与深克隆对于JavaSE来说,是个难度系数比较低的概念,但不应该轻视它. 假设一个场景:对于某个list,代码里并没有任何对其的直接操作,但里面的元素的属性却被改变了,这可能就涉 ...
- bootstrap+Ajax+SSM(maven搭建)表单增删改查
前后端分离,前端利用ajax调用后端API接收json数据,进行表单的增删改查 软件架构 IDE:IDEA 数据库:mysql jdk:1.8 tomcat:9 后端:springmvc,mybati ...
- 每天一个linux命令:【转载】rmdir命令
今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删 ...
- Java并发--并发容器之ConcurrentHashMap
下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为 ...
- hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1
问题导读1.Hadoop文件系统shell与Linux shell有哪些相似之处?2.如何改变文件所属组?3.如何改变hdfs的文件权限?4.如何查找hdfs文件,并且不区分大小写? 概述文件系统 ( ...
- sublime自动格式化代码插件HTML-CSS-JS Prettify安装
sublime自动格式化代码插件HTML-CSS-JS Prettify安装 问题: 用 Sublime Text 格式化代码(安装 HTML-CSS-JS Prettify 插件)时,格式化时却会提 ...
- 使用distillery 实现版本的动态升级&& 动态降级
备注: distillery 使用很棒的elixir 打包构建工具,下面演示的是升级以及降级 1. 参考项目 https://github.com/rongfengliang/phoenix-r ...
- JavaFX 之自定义窗口标题栏(二)
一.问题场景 PC客户端登录界面仿QQ,上边显示图片,下边显示输入框和登录按钮.而JavaFX默认的窗口,不满足需求. 二.解决思路 隐藏窗口默认的标题栏,使用创建label对象,使用css将按钮图片 ...
- 写动态库时遇到了symbol lookup error问题
之前写TLPI上的代码一直是手动进行错误处理,感觉代码冗余量很大,最后还是决定使用书上的tlph_hdr.h,顺便回顾下动态库的创建/使用. 参考很久之前的一篇博客 linux上静态库和动态库的编译和 ...