python 06 8/28-8/30
六
函数的返回值,使用return返回数据,可以同时返回多个数据,将会以元组的形式返回到函数的调用处。return 具有返回数据和中止程序的作用!
return 后不加任何数据则返回None ,判定为False。
关于【组包与解包】:
组包:python解释器自动将多个数据组装到一个容器中
解包:将容器中的多个数据拆出来
1.
# 组包: 解释器把1,2,3自动组包成一个元组,然后赋值给a,a的类型就是元组类型的
a = 1,2,3 # 相当于 a = (1,2,3)
print(a) # (1, 2, 3)
print(type(a)) # <class 'tuple'>
#解包: 解释器会自动对元组(1,2)进行 解包,然后把1赋值给m,把2赋值给n
m,n,k = (1,2,3) # m=1,n=2,k=3
print(m) # 1
print(n) # 2
print(k) # 3
函数使用参数可以使函数变得更加通用,增加扩展性。参数的顺序有讲究,定义函数时,【形参顺序】
def func(位置参数,可变位置参数,默认参数,可变关键字参数):
pass
func(*args,**kwargs) 与 func(args,kwargs)返回的数据不同,* 或者**具有解包的作用,*用来将普通参数元组解开,**用来将关键字参数字典解开。
**kwargs只能在调用函数时使用。
1.
def func1(*args ,**kwargs):
print(args) # (10, 20) # ( (10, 20) , {'n': 30, 'm': 40})
print(kwargs) # {'n': 30, 'm': 40}
def func2(* args ,** kwargs):
#print(args) # (10, 20)
#print(kwargs) # {'n': 30, 'm': 40}
#解包:* args -> *(10,20)->10,20
#解包:** kwargs -> **{'n': 30, 'm': 40}-> n=30,m=40
#func1(args,kwargs) # func1( (10, 20) , {'n': 30, 'm': 40}) 结果为:((10, 20), {'n': 30, 'm': 40}) {}
func1(*args,**kwargs) # func1( 10, 20 , n=30,m=40) 结果为:(10, 20) {'n': 30, 'm': 40}
func2(10,20,n=30,m=40) # func2((10,20), {'n': 30, 'm': 40})
2.
a = range(8)
print(*a) # 解包 0 1 2 3 4 5 6 7
b = [1,2,3]
print(*b) #1 2 3
七
局部变量,与全局变量,直接在函数体内定义(局部变量)与函数体外定义(全局变量)的相同的变量,则局部变量会将全局变量覆盖,且只能
在该函数体内使用该变量。若想在函数体内修改全局变量,则在函数体内用global声明该变量 ,声明格式为:global 变量名。
关于【引用】,分可变类型与不变类型,且python中参数传递的方式是【址传递方式】,传递数据,传递的是数据对应的地址。
关于引用的详细,参考另一篇专门关于引用理解的随笔。
【列表生成式】 定义格式 list1 = [i for i in rang(5)],list2 = [i for i in range(5) if i not(i % 2)],
list3 = [(i,j) for i in range(5) for j in range(5)]。
【匿名函数】 定义格式: lambda a,b: a + b , a,b为形参,返回的数据为a+b。匿名函数只能用来执行一些简单的操作。
当对元素为字典的列表进行排序时,使用匿名函数,很方便。
1.
stus = [
{"name": "zhangsan", "age": 18},
{"name": "lisi", "age": 19},
{"name": "wangwu", "age": 17}
]
#对该列表按照age进行排序
#第一种方法
def ke(x):
return x['age']
stus.sort(key = ke)
print(stus)
#第二种方法
stus.sort(key = lambda x : x["age"])
print(stus)
【递归函数】 在函数内自己调用自己的函数(效率低)。
开发递归函数的条件:
1.在函数内部自己调用自己 (保证函数可以跳进去)
2.给递归设置一个中止的条件(保证函数可以跳出去)
除了在最近写的随笔外还有一些易错点:
1.
list2 =[] # 空值默认为False
for i in list2 : # 因为list2为空 所以根本无法遍历list2
print(type(i["姓名"])) # 这个pritn()语句无法执行
for i in list2:
print("进入")
else:
print("未进入") # 未进入
if not list2:
print("yes") #yes
2.如果写int("1.0")就会错误,因为python假设需要进行int转型的字符串仅仅包含数字,这时候用int(float("1.0"))就可以完成转化了。
python 06 8/28-8/30的更多相关文章
- Python爬虫入门教程 62-100 30岁了,想找点文献提高自己,还被反爬了,Python搞起,反爬第2篇
学术搜索 学习理论的知识少不了去检索文献,好多文献为你的实操提供了合理的支撑,我所在的大学内网默认是有知网账户的,非常NICE 今天要完成的网站是 http://ac.scmor.com/ Googl ...
- python从入门到精通之30天快速学python视频教程
点击了解更多Python课程>>> python从入门到精通之30天快速学python视频教程 课程目录: python入门教程-1-Python编程语言历史及特性.mkv pyth ...
- python全栈考题 3.30
1.执行Python 脚本的两种方式 1.>>python ../pyhton.py 2. >>python.py #必须在首行有 #!/usr/bin/env ...
- 孤陋寡闻了吧?Python 居然可以做这30件神奇好玩的事情(附教程)
知乎上有个浏览超过400万的问题:可以用 Python 编程语言做哪些神奇好玩的事情? 我先举一个很不专业的栗子...... 然后再找几个人抬一堆例子来...... 不是很稀饭<复联>嘛, ...
- opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程
很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...
- 2018最新Python小白入门教程,30天学会Python
随着Python的技术的流行,Python在为人们带来工作与生活上带来了很多的便捷,因为Python简单,学起来快,也是不少新手程序员入门的首选语言.作为一名Python爱好者,我也想跟大家分享分享我 ...
- *【Python】【demo实验30】【练习实例】【使用Turtle实现实时时钟效果】
目的: 使用Turtle实现实时时钟效果 源代码: # encoding=utf-8 # -*- coding: UTF-8 -*- import turtle from datetime impor ...
- Python自动化运维之30、Flask框架
Flask 官网:http://flask.pocoo.org/ flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...
- 剑指offer——python【第28题】数组 中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
随机推荐
- bzoj 2806: [Ctsc2012]Cheat【广义SAM+二分+dp+单调队列】
把模板串建一个广义SAM 然后在线查询,每次在SAM上预处理出一个a[i]表示i位置向前最多能匹配多长的模板串 二分答案L,dp判断,设f[i]为·~i有几个匹配,转移显然是f[i]=max{f[i- ...
- bzoj1179: [Apio2009]Atm 【缩点+spfa最长路】
题目传送门 Description Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruser i 银行的 ATM 取款机.令人奇怪的是,S ...
- Luogu P1373 小a和uim之大逃离【dp】By cellur925
题目传送门 $50pts$:容易设计出状态$f[i][j][l][r][st]$表示当前的这个人在($i$,$j$),小a和uim魔瓶中的含量分别为$l$,$r$,当$st=0$表明现在是小a在吃,当 ...
- AForge.NET .NET2.0程序集无法在.net 4.0 中运行的解决方案
如有雷同,不胜荣欣,若转载,请注明 最近在项目上一直使用.net4.0 framework,突然发现一个AForge.net中使用ffmepeg下的一个dll时,提示只能在2.0下运行,在众多MSDN ...
- win32 指令大全
指令类型 助记符 (带*为特权指令) 对标志寄存器的影响 备注 说明 举例 ZF CF PF SF OF AF DF IF TF 数据传送类 数据传送 MOV 不影响标志位 Move MOV r/m3 ...
- redis查数据
1 连接服务 [root@redis1-20 ~]# telnet 127.0.0.1 6380 Trying 127.0.0.1... Connected to 127.0.0.1. Escape ...
- html img标签显示一个默认图片
1. [代码]img标签src对应的图片不存在,显示一个默认的图片 <img src="abc.JPG" onerror="this.src='default.JP ...
- jmeter(十八)属性和变量
一.Jmeter中的属性: 1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常 ...
- RAID 0、1、5、1+0总结
RAID(Redundant Array Of Independent Disk,独立磁盘冗余阵列),可以提供比普通磁盘更快的速度.更高的安全性,生产环境中服务器在安装时一般都会做RAID,RAID的 ...
- Apache Kylin的核心概念
不多说,直接上干货! 1.表(table):This is definition of hive tables as source of cubes,在build cube 之前,必须同步在 kyli ...