需要熟练的Python知识点

数据与列表元祖字符串

repr(x) 将对象x转换为表达式字符串

eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象

unichr(x) 将一个整数转换为Unicode字符

hex(x) 将一个整数转换为一个十六进制字符串

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

cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4

pow(x, y) x**y 运算后的值。

round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j

list.count(obj) 统计某个元素在列表中出现的次数

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

list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

len(dict) 计算字典元素个数,即键的总数

dict.fromkeys(seq[, value]) 该方法返回一个新字典  如果不指定value 则返回值为None的字典

dict.items() 返回可遍历的(键, 值) 元组列表

enumerate() 生成相应的enumerate型的对象

enum_obj = enumerate("abcd") # >>> 新建了一个enumerate型的对象
for index, ele in enum_obj:
    print(index, ele)        # >>> 依次输出: 1 "a", 2 "b", 3 "c", 4 "d"

zip() 生成相应的zip型的对象,返回元祖列表 类似dict.items()

for i in zip("abcd", "1234"):
    print(i)    # >>> 依次输出:("a", "1"), ("b", "2"), ("c","3"), ("d","4")

string.partition() 方法用来根据指定的分隔符将字符串进行分割,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。partition() 的作用和split() 类似

str = "www.runoob.com"
print str.partition(".")
# ('www', '.', 'runoob.com')

string.join() 这实际上是一个连接函数,但我还是把它放在分割里面讲了。它的作用是以string为分隔符,将括号里面的字符串序列连接起来(注意,一定是字符串形式的序列,比如由字符串构成的列表等等),构成新的字符串。

print(",".join(["I", "wrote", "Python"])) # >>> "I,wrote,Python"
print("**".join("123")) # >>> "1**2**3"

string.upper() 是转换成大写,string.title()是首字母大写

函数

使用lambda可以定义简单的单行匿名函数。lambda的语法是:

lambda args: expression  #同时表达式(expression)的值就是匿名函数调用的返回值

lambda_add = lambda x, y: x + y
print(lambda_add(1,2))  #返回3

这与使用def定义的求和函数完全一样,甚至可以将lambda表达式进行赋值传递

lambda_add = lambda x, y: x + y
aaaaaa = lambda_add
print(aaaaaa(1,2))

所以函数是可以被变量引用的,函数作为参数和返回值也是Python比较普遍的做法了,闭包就是一类特殊的函数

闭包: 如果一个函数定义在另一个函数的作用域中,并且函数中引用了外部函数的局部变量,那么这个函数就是一个闭包

def func():
    n = 1
    def inner():
        print n
    inner() # 返回1
    n = 'x'
    inner() # 返回"x"
func()

函数inner定义在func()的作用域中,并且在inner中使用了func中的局部变量n,构成了一个闭包。闭包绑定了外部的变量,所以调用函数f的结果是打印1和'x'。

这类似于普通的模块函数和模块中定义的全局变量的关系:修改外部变量能影响内部作用域中的值,而在内部作用域中定义同名变量则将遮蔽(隐藏)外部变量。

闭包只有在作为参数和返回值时才能发挥它的真正威力

作为参数: 

如果你对OOP的模板方法模式很熟悉,相信你能很快速地学会将函数当作参数传递。两者大体是一致的,只是在这里,我们传递的是函数本身而不再是实现了某个接口的对象。 

原文地址:https://www.cnblogs.com/clemente/p/10214925.html