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有很大的不同:

#include<stdio.h>
int main() {
    if(2 > 0) {
        int i = 0;
    }
    printf("i = %d", i);
    return 0;
}

在这段代码中,if子句引入了一个局部作用域,变量i就存在于这个局部作用域中,但对外不可见,因此,接下来在printf函数中对变量i的引用会引发编译错误。

if True:
    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

三、进制
二进制,01
八进制,01234567
十进制,0123456789

十六进制,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数字类型转换
int(x [,base ])         将x转换为一个整数  long(x [,base ])        将x转换为一个长整数  float(x )               将x转换到一个浮点数  
complex(real [,imag ])  创建一个复数  
str(x )                 将对象 x 转换为字符串  
repr(x )                将对象 x 转换为表达式字符串  eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象  
tuple(s )               将序列 s 转换为一个元组  
list(s )                将序列 s 转换为一个列表  
chr(x )                 将一个整数转换为一个字符  
unichr(x )              将一个整数转换为Unicode字符  
ord(x )                 将一个字符转换为它的整数值  
hex(x )                 将一个整数转换为一个十六进制字符串  
oct(x )                 将一个整数转换为一个八进制字符串

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初级进阶篇相关推荐

  1. 笨办法学python3进阶篇下载_笨办法学Python 3 进阶篇

    书名:"笨办法"学Python 3:进阶篇 定价:59.0 ISBN:9787115505392 作者: 泽德·A. 肖 版次:第1版 出版时间:2020-06 内容提要: 本书是 ...

  2. 〖Python语法进阶篇①〗- 进程与多进程概述

    说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区. 福利:除了通过订阅"白宝书系列专栏"加入社区获取 ...

  3. Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析

    上一篇:Python 爬虫入门篇-如何获取网页中的图片.我们了解到了 urllib 获取图片的原理,urllib.request.urlretrieve() 就是用来获取图片的. 这一篇,我们用正则表 ...

  4. 100天精通Python(进阶篇)——第34天:正则表达式大总结

    文章目录 每篇前言 一.正则表达式概述 1.语法大全 2.修饰符 - 可选标志 3.运算符优先级 4.实例简单字符匹配 二.re 模块 1.re模块操作 2.匹配单个字符 3.匹配多个字符 4.匹配开 ...

  5. python线程池阻塞队列_福利又来啦!python多线程进阶篇

    使用Python中的线程模块,能够同时运行程序的不同部分,并简化设计.如果你已经入门Python,并且想用线程来提升程序运行速度的话,希望这篇教程会对你有所帮助. 通过阅读本文,你将了解到:什么是死锁 ...

  6. 〖Python语法进阶篇⑬〗- 正则表达式 - re 模块常用函数

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  7. 〖Python语法进阶篇⑩〗- 正则表达式的字符匹配

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  8. 〖Python语法进阶篇⑧〗- 异步关键字与gevent包

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  9. 〖Python语法进阶篇⑨〗 - 初探正则

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

最新文章

  1. QT的QThread类的使用
  2. 哲学家就餐问题php代码,Python实现哲学家就餐问题实例代码
  3. java 登录数据前端加密+后台验证RSA
  4. 64位 regsrv win10_Win10 64位安装个人版SQL2000图文教程
  5. 安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?
  6. jQuery基础教程之如何注册以及触发自定义事件
  7. matlab中round函数_Excel中round函数的使用方法
  8. uint8_t / uint16_t / uint32_t /uint64_t
  9. [CF453A] Little Pony and Expected Maximum【数论】
  10. Jetson tk1 刷机教程
  11. 【劲峰论道时空分析技术-学习笔记】5 时空格局和异常探测
  12. Mediator(中介者)
  13. 16MHz贴片晶振智能电子产品的好帮手
  14. 使用ant design遍历多选组件时,选择一个,所有便利的选择器都进行了选择。
  15. python DataFrame isin() 与 ~isin()
  16. 云服务器怎么安装虚拟主机,服务器上怎么安装虚拟主机
  17. 如何高效进行大规模分类?
  18. 2023最值得推荐的5款零编程数据可视化软件
  19. 我的财富自由之路 - 财富的自我认知
  20. java中公钥,私钥,pkcs1格式,pkcs8格式互转

热门文章

  1. qq面板(仿版,未完待续中。。。。)---2017-04-24
  2. Swift泛型Protocol对比C#泛型Interface
  3. CSS导入使用及引用的两种方法
  4. 众多Android 开源项目再次推荐,学习不可错过
  5. Linux文件系统十问
  6. Linux 系统中的dvfs功能
  7. ubuntu start
  8. DataWhale组队-Pandas(下)缺失数据(打卡)
  9. eltable刷新整个表格方法_利用SSAS实现PBI报表增量刷新
  10. iphone mac地址是否随机_iOS8随机MAC地址功能:需要满足前提要求