python初级进阶篇
python之路:进阶篇
一、作用域 |
在Python 2.0及之前的版本中,Python只支持3种作用域,即局部作用域,全局作用域,内置作用域;在Python 2.2中,Python正式引入了一种新的作用域 --- 嵌套作用域;在Python 2.1中,嵌套作用域可以作为一个选项被开启;嵌套作用域的引入,本质上为Python实现了对闭包的支持,关于闭包的知识,网上有很多解释,这里就不详细展开了。相应地,变量查找顺序由之前的LGB变成LEGB(L:Local,E:Enclosing,G:Global,B:Built-in)。
在Python中,并不是任何代码块都能引入新的作用域,这与C有很大的不同:
int main() {
if(2 > 0) {
int i = 0;
}
printf("i = %d", i);
return 0;
}
在这段代码中,if子句引入了一个局部作用域,变量i就存在于这个局部作用域中,但对外不可见,因此,接下来在printf函数中对变量i的引用会引发编译错误。
i = 0
print i
在这段代码中,if子句并没有引入一个局部作用域,变量i仍然处在全局作用域中,因此,变量i对于接下来的print语句是可见的。
实际上,在Python中,只有模块,类以及函数才会引入新的作用域,其它的代码块是不会引入新的作用域的。
在Python中,名字绑定在所属作用域中引入新的变量,同时绑定到一个对象。名字绑定发生在以下几种情况之下:
1.参数声明:参数声明在函数的局部作用域中引入新的变量;
2.赋值操作:对一个变量进行初次赋值会在当前作用域中引入新的变量,后续赋值操作则会重新绑定该变量;
3.类和函数定义:类和函数定义将类名和函数名作为变量引入当前作用域,类体和函数体将形成另外一个作用域;
4.import语句:import语句在当前作用域中引入新的变量,一般是在全局作用域;
5.for语句:for语句在当前作用域中引入新的变量(循环变量);
6.except语句:except语句在当前作用域中引入新的变量(异常对象)。
只要在内存里存在就可以使用
二、三元运算 |
Python对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但也有类似的替代方案,那就是true_part if condition else false_part。
>>> 1 if True else 0
1
>>> 1 if False else 0
0
>>> "Fire" if True else "Water"
'Fire'
>>> "Fire" if False else "Water"
'Water'
使用and-or技巧,利用条件判断的优先特性来实现三元条件判断,比如P∧Q,在Python中如果P为假,那么Python将不会继续执行Q,而直接判定整个表达式为假(P值),当然如果P为真,那就还要继续执行Q来决定整个表达式值;同样的P∨Q,如果P为真,那么就不会继续执行Q了…
简化if判断:
name = 'ales'
#######################################################
if 1 == 1:
name 'sb'
else:
name '2b'
可以写成:
name = "sb" if 1 == 1 else "2b"
name = 值1 if 条件 else 值2
#如果条件成立,输出值1,否则输出值2
>>> name = 'dog'
>>> name = "boy" if 1 == 1 else "gol"
>>> print name
boy
三、进制 |
十六进制,0123456789ABCDE每种语言都有一个常用的进制,python常用的是十进制
四、python基础 |
通过type可以查看对象类型,dir(类型名) 查看类中提供的所有功能
help(类型名) 查看类中所有详细的功能名 help(类型名.功能名)查看类中某功能的详细
python的一切事物都是对象,对象基于类创建
>>> type(list) #查看对象属于哪个类
<type 'type'>
##############################################################
>>> dir(list) #查看类中有那些功能
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli
ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r
educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__'
, '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'a
ppend', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'
]
#带双下划线的叫内置方法,可能有多种执行方法,最少一种。不带双下划线的叫非内置
非内置执行方法
list.append()
内置方法执行方式:
>>> n1 = -9
>>> abs(n1)
9
>>> n1.__abs__()
9
>>> help(list) #查看类中所有详细的功能
>>> help(list.append) #查看类中某功能的详细信息
Help on method_descriptor:
append(...)
L.append(object) -- append object to end
Python列表函数&方法 |
python包含以下函数:
序号 | 函数 |
---|---|
1 |
cmp(list1, list2) 比较两个列表的元素 |
2 |
len(list) 列表元素个数 |
3 |
max(list) 返回列表元素最大值 |
4 |
min(list) 返回列表元素最小值 |
5 |
list(seq) 将元组转换为列表 |
python包含以下方法:
序号 | 方法 |
---|---|
1 |
list.append(obj) 在列表末尾添加新的对象 |
2 |
list.count(obj) 统计某个元素在列表中出现的次数 |
3 |
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 |
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 |
list.insert(index, obj) 将对象插入列表 |
6 |
list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 |
list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 |
list.reverse() 反向列表中元素 |
9 |
list.sort([func]) 对原列表进行排序 |
Python支持四种不同的数值类型: |
整型(int)-通常被称为是整型或整数,是正或负整数,不带小数点。
长整型(long integers)~无限大小的整数,整数最后是一个大写或小写的L
浮点型(floating point real values)=浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
复数(complex numbers)- 复数的虚部以字母J或j结尾,如:2+3j
int | long | float | complex |
---|---|---|---|
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
-0490 | 535633629843L | -90. | -.6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
长整型也可以使用小写“L”,但是还是建议您使用大写“L”,避免与数字“1”混淆。python使用“L”来显示长整型。
python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者comples(a, b)表示,复数的实部a和虚部b都是浮点型
python数字类型转换 |
python数学函数 |
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j |
Python随机函数 |
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性,
python包含以下常用随机数函数:
函数 | 描述 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
Python三角函数 |
python包括以下三角函数:
函数 | 描述 | |
---|---|---|
acos(x) | 返回x的反余弦弧度值。 | |
asin(x) | 返回x的反正弦弧度值。 | |
atan(x) | 返回x的反正切弧度值。 | |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 | |
cos(x) | 返回x的弧度的余弦值。 | |
hypot(x, y) | 返回欧几里德范数 sqrt(x*x + y*y)。 | |
sin(x) | 返回的x弧度的正弦值。 | |
tan(x) | 返回x弧度的正切值。 | |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 | |
radians(x) | 将角度转换为弧度 |
Python数学常量 |
常量 | 描述 |
---|---|
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
Python 字符串 |
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
元组元算符 |
与字符串一样,元组之间可以使用 + 号和 * 号进行运算,这就意味着他们可以组合和赋值,运算后生成一个新的元组。
Python 表达式 | 结果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
元组的元素不能修改,元组的元素的元素可以修改
元组索引、截取 |
Python 表达式 | 结果 | 描述 |
---|---|---|
L[2] | 'Hello' | 读取第三个元素 |
L[-2] | 'Hello' | 反向读取;读取倒数第二个元素 |
L[1:] | ('Hello', 'world') | 截取元素 |
元组内置函数 |
python元组包含了以下内置函数
序号 | 方法及描述 |
---|---|
1 |
cmp(tuple1, tuple2) 比较两个元组元素。 |
2 |
len(tuple) 计算元组元素个数。 |
3 |
max(tuple) 返回元组中元素最大值。 |
4 |
min(tuple) 返回元组中元素最小值。 |
5 |
tuple(seq) 将列表转换为元组。 |
字典内置函数&方法 |
python字典包含了以下内置函数:
序号 | 函数及描述 |
---|---|
1 |
cmp(dict1, dict2) 比较两个字典元素。 |
2 |
len(dict) 计算字典元素个数,即键的总数。 |
3 |
str(dict) 输出字典可打印的字符串表示。 |
4 |
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 |
python字典包含了以下内置函数:
序号 | 函数及描述 |
---|---|
1 |
radiansdict.clear() 删除字典内所有元素 |
2 |
radiansdict.copy() 返回一个字典的浅复制 |
3 |
radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 |
radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
5 |
radiansdict.has_key(key) 如果键在字典dict里返回true,否则返回false |
6 |
radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 |
radiansdict.keys() 以列表返回一个字典所有的键 |
8 |
radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default |
9 |
radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 |
radiansdict.values() 以列表返回字典中的所有值 |
python初级进阶篇相关推荐
- 笨办法学python3进阶篇下载_笨办法学Python 3 进阶篇
书名:"笨办法"学Python 3:进阶篇 定价:59.0 ISBN:9787115505392 作者: 泽德·A. 肖 版次:第1版 出版时间:2020-06 内容提要: 本书是 ...
- 〖Python语法进阶篇①〗- 进程与多进程概述
说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区. 福利:除了通过订阅"白宝书系列专栏"加入社区获取 ...
- Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析
上一篇:Python 爬虫入门篇-如何获取网页中的图片.我们了解到了 urllib 获取图片的原理,urllib.request.urlretrieve() 就是用来获取图片的. 这一篇,我们用正则表 ...
- 100天精通Python(进阶篇)——第34天:正则表达式大总结
文章目录 每篇前言 一.正则表达式概述 1.语法大全 2.修饰符 - 可选标志 3.运算符优先级 4.实例简单字符匹配 二.re 模块 1.re模块操作 2.匹配单个字符 3.匹配多个字符 4.匹配开 ...
- python线程池阻塞队列_福利又来啦!python多线程进阶篇
使用Python中的线程模块,能够同时运行程序的不同部分,并简化设计.如果你已经入门Python,并且想用线程来提升程序运行速度的话,希望这篇教程会对你有所帮助. 通过阅读本文,你将了解到:什么是死锁 ...
- 〖Python语法进阶篇⑬〗- 正则表达式 - re 模块常用函数
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
- 〖Python语法进阶篇⑩〗- 正则表达式的字符匹配
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
- 〖Python语法进阶篇⑧〗- 异步关键字与gevent包
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
- 〖Python语法进阶篇⑨〗 - 初探正则
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
最新文章
- QT的QThread类的使用
- 哲学家就餐问题php代码,Python实现哲学家就餐问题实例代码
- java 登录数据前端加密+后台验证RSA
- 64位 regsrv win10_Win10 64位安装个人版SQL2000图文教程
- 安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?
- jQuery基础教程之如何注册以及触发自定义事件
- matlab中round函数_Excel中round函数的使用方法
- uint8_t / uint16_t / uint32_t /uint64_t
- [CF453A] Little Pony and Expected Maximum【数论】
- Jetson tk1 刷机教程
- 【劲峰论道时空分析技术-学习笔记】5 时空格局和异常探测
- Mediator(中介者)
- 16MHz贴片晶振智能电子产品的好帮手
- 使用ant design遍历多选组件时,选择一个,所有便利的选择器都进行了选择。
- python DataFrame isin() 与 ~isin()
- 云服务器怎么安装虚拟主机,服务器上怎么安装虚拟主机
- 如何高效进行大规模分类?
- 2023最值得推荐的5款零编程数据可视化软件
- 我的财富自由之路 - 财富的自我认知
- java中公钥,私钥,pkcs1格式,pkcs8格式互转