python中3∧2_第二篇、python进阶篇

本文介绍了Python的作用域规则,包括局部、全局、嵌套和内置作用域,并探讨了变量查找顺序。接着,讨论了Python中的三元运算表达式,以及如何使用and-or技巧实现类似三元条件判断。此外,文章还讲解了Python中的进制表示,包括二进制、八进制、十进制和十六进制。最后,概述了Python的基础知识,如类型检查、列表方法和内置数学函数等。
摘要由CSDN通过智能技术生成

一、作用域

在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语句在当前作用域中引入新的变量(循环变量);

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)        #查看对象属于哪个类

##############################################################

>>> 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)

在列表末尾添加新的对象

2list.count(obj)

统计某个元素在列表中出现的次数

3list.extend(seq)

在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

4list.index(obj)

从列表中找出某个值第一个匹配项的索引位置

5list.insert(index, obj)

将对象插入列表

6list.pop(obj=list[-1])

移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

7list.remove(obj)

移除列表中某个值的第一个匹配项

8list.reverse()

反向列表中元素

9list.sort([func])

对原列表进行排序

python支持四种不同的数值类型:

整型(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-052318172735L-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)返回数字的上入整数,如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元组包含了以下内置函数序号方法及描述

1cmp(tuple1, tuple2)

比较两个元组元素。

2len(tuple)

计算元组元素个数。

3max(tuple)

返回元组中元素最大值。

4min(tuple)

返回元组中元素最小值。

5tuple(seq)

将列表转换为元组。

字典内置函数&方法

python字典包含了以下内置函数:序号函数及描述

1cmp(dict1, dict2)

比较两个字典元素。

2len(dict)

计算字典元素个数,即键的总数。

3str(dict)

输出字典可打印的字符串表示。

4type(variable)

返回输入的变量类型,如果变量是字典就返回字典类型。

python字典包含了以下内置函数:

序号函数及描述

1radiansdict.clear()

删除字典内所有元素

2radiansdict.copy()

返回一个字典的浅复制

3radiansdict.fromkeys()

创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

4radiansdict.get(key, default=None)

返回指定键的值,如果值不在字典中返回default值

5radiansdict.has_key(key)

如果键在字典dict里返回true,否则返回false

6radiansdict.items()

以列表返回可遍历的(键, 值) 元组数组

7radiansdict.keys()

以列表返回一个字典所有的键

8radiansdict.setdefault(key, default=None)

和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default

9radiansdict.update(dict2)

把字典dict2的键/值对更新到dict里

10radiansdict.values()

以列表返回字典中的所有值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值