python基础注意点(一)

Python使用\事项多行语句

String[0:-1]是第一个到倒数第二个

一行显示多条语句的话,语句之间使用分号(;)分割

if elif else

Print函数默认换行,在函数里写end=””就不会换行了

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

a, b, c, d = 20, 5.5, True, 4+3j

<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

type()不会认为子类是一种父类类型。

isinstance()会认为子类是一种父类类型。

Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

del语句删除一些对象引用

>>>5 + 4  # 加法

9

>>> 4.3 - 2 # 减法

2.3

>>> 3 * 7  # 乘法

21

>>> 2 / 4  # 除法,得到一个浮点数

0.5

>>> 2 // 4 # 除法,得到一个整数

0

>>> 17 % 3 # 取余

2

>>> 2 ** 5 # 乘方

32

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = ()    # 空元组

tup2 = (20,) # 一个元素,需要在元素后添加逗号

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

print (tinydict.keys())   # 输出所有键

print (tinydict.values()) # 输出所有值

in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否int(x) 将x转换为一个整数。

float(x) 将x转换到一个浮点数。

complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式相等。

在交互模式中,最后被输出的表达式结果被赋值给变量 _

abs(x) 返回数字的绝对值,如abs(-10) 返回 10

ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5

cmp(x, y)

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃 。使用 使用 (x>y)-(x<y) 替换。

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的平方根。

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三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

在Python3中,所有的字符串都是Unicode字符串

可以使用 del 语句来删除列表的的元素

不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,

>>>thisset = set(("Google", "Runoob", "Taobao")) 

>>> thisset.update({1,3}) 

>>> print(thisset) {1, 3, 'Google', 'Taobao', 'Runoob'}

>>> thisset.update([1,4],[5,6]) 

>>> print(thisset) {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}

还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:

s.discard( x )

设置随机删除集合中的一个元素,语法格式如下:

s.pop()

s.update( {"字符串"} ) 将字符串添加到集合中。

s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略

在 while … else 在条件语句为 false 时执行 else 的语句块:

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for循环的一般格式如下:

for <variable> in <sequence>:

    <statements>

else:

<statements>

for i in range(5):

...     print(i)

...

0

1

2

3

4

break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。

Python pass是空语句,是为了保持程序结构的完整性。

迭代器有两个基本的方法:iter() 和 next()。

t = iter(list)    # 创建迭代器对象

print (next(it))   # 输出迭代器的下一个元素

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

import sys

 

def fibonacci(n): # 生成器函数 - 斐波那契

    a, b, counter = 0, 1, 0

    while True:

        if (counter > n):

            return

        yield a

        a, b = b, a + b

        counter += 1

f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

 

while True:

    try:

        print (next(f), end=" ")

    except StopIteration:

        sys.exit()

0 1 1 2 3 5 8 13 21 34 55

 

不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

 

可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:

def functionname([formal_args,] *var_args_tuple ):

   "函数_文档字符串"

   function_suite

   return [expression]

加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

 

如果单独出现星号 * 后的参数必须用关键字传入。

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

lambda 只是一个表达式,函数体比 def 简单很多。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda 函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:

L (Local) 局部作用域

E (Enclosing) 闭包函数外的函数中

G (Global) 全局作用域

B (Built-in) 内建作用域

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了

 

 

 

猜你喜欢

转载自blog.csdn.net/ch1209498273/article/details/81290473
今日推荐