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. ...
随机推荐
- YCOJ-DFS
DFS搜索是搜索中的一种,即深度优先搜索(Depth First Search),其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 图示: 如图,这是邻接矩阵,我 ...
- yield 为什么不能进入回调函数
操他妈的, allowed_domains = ['voice.hupu.com'] 这里面必须是域名,而不能是个路径,遇见问题不要瞎几把想,及时Google才是正道!!!!!!!!!11 感谢: h ...
- php in_array 的 坑
话不多说,直接上代码 $str = '7.php'; var_dump(in_array($str,range(0,100))); die; 是 true 这是因为 php是弱类型语言,会把7.php ...
- 51Nod 1095 Anigram单词
熟练使用map即可,不然用vector会超时 #include <iostream> #include <cstring> #include <string> #i ...
- Selenium | 简单使用
需求分析: 登录百度首页,对百度首页进行截屏操作,保存文件 核心代码如下: //配置浏览器 System.setProperty("webdriver.chrome.driver" ...
- WOJ1019 所有的M数
题目链接: WOJ1019 题目分析: 单调栈维护,读一个进来,如果前面的比它大就弹出来,然后压栈里(反正它在最右边) 压进栈里输出它前面那个数就好了 O(n)扫一遍就能过 真的水得不能再水的题了-- ...
- 洛谷 P1445 [Violet]樱花
#include<cstdio> #include<algorithm> #include<cstring> #include<vector> usin ...
- Query on a tree again! SPOJ - QTREE3
https://vjudge.net/problem/SPOJ-QTREE3 https://www.luogu.org/problemnew/show/P4116 一个log(LCT)比两个log( ...
- 金蝶Apusic中间件适配JetSpeed2过程记录
金蝶Apusic中间件适配JetSpeed2过程记录: 1.安装金蝶并配置域,确保域运行正常. 2.参考<JetSpeed2部署至Apusic操作步骤记录>进行应用迁移. https:// ...
- windows session 管理
Killing an Oracle process from inside Oracle I had a following situation few days ago – I was runnin ...