跟着太白老师学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 关键词开头,空格之后接函数名 ...
随机推荐
- 现在很火的数据科学到底是什么?你对做DATA SCIENTIST感兴趣吗?
转自– Warald (Email: iamxiaoning@gmail.com) 博客: http://www.1point3acres.com,微博:http://www.weibo.com/wa ...
- 安装vmware exsi 6.0(自制虚拟服务器)
安装准备:2枚U盘.每个U盘大于2G.或者1枚光盘外加一枚U盘. exsi是一个虚拟服务容器.是一个专门运行虚拟的服务器系统. 关于服务的要求.由于exsi是专业的虚拟服务容器.所以服务器要求比较苛刻 ...
- [译]缓解BEAST对TLS攻击的方式
原文链接:https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls 原 ...
- Android HOOK工具Cydia Substrate使用详解
目录(?)[+] Substrate几个重要API介绍 MShookClassLoad MShookMethod 使用方法 短信监控实例 Cydia Substrate是一个代码修改平台.它可以修 ...
- java project 项目在 linux 下面部署方法
1.前提是安装好了响应的开发和部署环境,例如jdk. 2.在Linux下运行可执行Jar包,首先准备jar包,一般的编译工具Eclipse,jbuilder都提供export功能,可以生成jar包. ...
- eclipse 无用代码扫描工具UCDetector
本文主要介绍UCDetector(无用代码扫描工具)使用方法及局限 对于沉积或多方接手开发的项目经常会遇到一坨一坨无用的代码,但一个一个类查找又相当费时,这里介绍一个eclipse插件扫描没有引用的类 ...
- CMDB
一.CMDB CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧 ...
- linux 系统下配置maven环境
1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2.解压源码包 通过终端在/usr/l ...
- uGUI知识点剖析之AutoLayout
http://www.2fz1.com/post/unity-ugui-autolayout/ uGUI知识点剖析之AutoLayout 前文详细介绍过RectTransform,RectTransf ...
- hadoop之 Hadoop2.2.0中HDFS的高可用性实现原理
在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障 ...