python中3∧2_第⼆篇、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
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语句在当前作⽤域中引⼊新的变量(循环变量);
只要在内存⾥存在就可以使⽤
⼆、三元运算
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
>>> "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) #查看对象属于哪个类
>>>>>>>>>>>>##
>>> 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包含以下函数:序号函数
1cmp(list1, list2)
⽐较两个列表的元素
2len(list)
列表元素个数
3max(list)
返回列表元素最⼤值
4min(list)
返回列表元素最⼩值
5list(seq)
将元组转换为列表
python包含以下⽅法:序号⽅法
1list.append(obj)
在列表末尾添加新的对象
统计某个元素在列表中出现的次数
在列表末尾⼀次性追加另⼀个序列中的多个值(⽤新列表扩展原来的列表)
4list.index(obj)
从列表中出某个值第⼀个匹配项的索引位置
5list.insert(index, obj)
将对象插⼊列表
6list.pop(obj=list[-1])
移除列表中的⼀个元素(默认最后⼀个元素),并且返回该元素的值
移除列表中某个值的第⼀个匹配项
反向列表中元素
9list.sort([func])
对原列表进⾏排序
python⽀持四种不同的数值类型:
index复数整型(int)-通常被称为是整型或整数,是正或负整数,不带⼩数点。
长整型(long integers)~⽆限⼤⼩的整数,整数最后是⼀个⼤写或⼩写的L
浮点型(floating point real values)=浮点型由整数部分与⼩数部分组成,浮点型也可以使⽤科学计数法表⽰(2.5e2 = 2.5 x 102= 250)复数(complex numbers)- 复数的虚部以字母J或j结尾,如:2+3j
intlongfloatcomplex
1051924361L0.03.14j
100-0x19323L15.2045.j
-7860122L-21.99.322e-36j
0800xDEFABCECBDAECBFBAEl32.3+e18.876j
-0490535633629843L-90.-.6545+0J
-0x260-0523********L-32.54e1003e+26J
0x69-4721885298529L70.2-E124.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)返回数字的上⼊整数,如il(4.1) 返回 5
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x)返回e的x次幂(ex),如p(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的反余弦弧度值。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论