人生苦短,我选Python
Python自学之路,任重而道远
序列
>>> tuple4 = (1.3,3.2,2.3)
>>> list(enumerate(tuple4))
[(0, 1.3), (1, 3.2), (2, 2.3)]
>>> a = [1,2,3,4,5,6,7,8]
>>> b = [6,7,8,9,10]
>>> list(zip(a,b))
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
字典
dict()字典工厂函数
>>> dict3 = dict(((1,'one'),(2,'two'),(3,'three')))
>>> dict3
{1: 'one', 2: 'two', 3: 'three'}
>>> dict3[1]
'one'
创建和访问字典
>>> dict1 = {'李宁':'一切皆有可能','耐克':'Just do it','阿迪达斯':'Impossible'}
>>> print(dict1['李宁'])
一切皆有可能
函数
定义:
无参>>> def firstFunction():
print('第一个函数')
带参>>> def secondFunction(name):
print('hello: '+ name)
>>> def thirdFunction(num1,num2):
result = num1 + num2
print(result)
带返回值>>> def add(num1,num2):
return (num1 + num2)
形参和实参
关键字参数
>>> def saySomething(name,words):
print(name + ':' +words)
>>> saySomething(words='words',name='hello')
hello:words
默认值参数
>>> def saySome(name='苍井空',words='是我老师'):
print(name + ':' + words)
>>> saySome()
苍井空:是我老师
>>> saySome('松岛枫')
松岛枫:是我老师
搜集参数(可变参数)
>>> def test(*params):
print('参数长度为:',len(params))
print('第二个参数是:',params[1])
>>> test(1,'sb',3.14,5,6)
参数长度为: 5
第二个参数是: sb
函数与过程
函数:有返回值
过程:无返回值
返回值
>>> def back():
return 1,'sb',3.14
>>> back()
内嵌函数和闭包
global关键字
>>> count = 5
>>> def myFunc():
global count
count = 10
print(count)
>>> myFunc()
10
>>> print(count)
10
内嵌函数(内部函数)
>>> def fun1():
print('fun1()被调用了。')
def fun2():
print('fun2()被调用了。')
fun2()
>>> fun1()
fun1()被调用了。
fun2()被调用了。
闭包
>>> def Funx(x):
def funy(y):
return x * y
return funy
>>> Funx(2)(3)
6
nonlocal:强制变量为非局部变量
lambda表达式(匿名函数)
作用:
1.python写一写执行脚本时,使用lambda就可以省下定义
函数过程,比如说我们只是需要写个简单的脚本来管理
服务器时间,我们就不需要专门定义一个函数然后再写调用,
使用lambda就可以使得代码更加精简
2.对于一些比较抽象并且整个程序执行下来只需要调用一
两次的函数,有时候给函数起个名字也是比较头疼的问题,
使用lambda就不需要考虑命名的问题了
3.简化代码的可读性,由于普通的屌丝函数阅读经常要跳到开头
def定义部分,使用lambda函数可以省去这样的步骤
>>> def ds(x):
return 2 * x + 1
>>> ds(4)
9
对比:
>>> a = lambda x : 2 * x + 1
>>> a(5)
11
>>> g = lambda x,y : x + y
>>> g(2,3)
5
两个常用的内置函数(BIF)
filter
取出所有奇数
>>> def odd(x):
return x % 2
>>> temp = range(10)
>>> show = filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
简化:
>>> list(filter(lambda x : x % 2,range(10)))
[1, 3, 5, 7, 9]
map
>>> list(map(lambda x : x * 2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
递归
求10的阶层
>>> def factorial(x):
if x == 1:
return 1
return x * factorial(x - 1)
>>> factorial(10)
3628800