三元运算
三元运算(三目运算),是简单的条件的语句缩写。
Python没有三目运算符但是可以用if else语句实现相同的功能:
#!/usr/bin/env python3
#三元运算格式
#result = 值1 if 条件 else 值2
#如果条件成立,那么值1赋值给变量result,否则将值2赋给result变量
#实例:
result = True if 1 > 0 else False
print(result)
#运行结果
True
lambda表达式
通过三元运算可以很快完成简单的if else 语句:
#普通if else语句
if 1 == 1:
name = 'wuSri_神人'
else:
name = 'alex_逗逼'
print(name)
#三元运算:
name = 'wuSri_神人' if 1 == 1 else 'alex_逗逼'
print(name)
执行结果:
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/boke.py
wuSri_神人
wuSri_神人
Process finished with exit code 0
简单的函数也可以用简单的表达式(lambda表达式):
1 #普通函数
2 def func(arg):
3 return arg + 1
4
5 result = func(123)
6 print(result)
7
8 #用lambda表达式
9 sum_lambda = lambda arg : arg + 1
10
11 result = sum_lambda(123)
12 print(result)
13 执行结果:
14 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/boke.py
15 124
16 124
17
18 Process finished with exit code 0
函数的参数
函数有三种不同的参数:普通参数、默认参数、动态参数。
三种参数实例介绍与使用:
1 #定义函数
2
3 #普通参数,数量一一对应
4 def func1(name): #name叫做函数func的形式参数,简称形参
5 print("func1",name)
6
7 func1('wuSir') #执行函数,'wuSir叫函数func的实际参数,简称实参
8
9
10 #默认参数,一定要把参数放到尾部
11 def func2(name,age = 88): #默认函数age = 88
12 print("func2 " "%s:%s" %(name,age))
13
14 func2('wuSir',98) #执行函数,指定函数让age = 98
15 func2('alex') #执行函数,使用默认参数
16
17 #动态参数,*args有多少参数接受多少参数,用tuple表示
18 def func3(*args):
19 print("func3",args)
20
21 func3(11,22,33,44,55) #执行函数,传入实参
22 li = [1,2,3,4,5] #定义一个列表
23 func3(*li) #把列表传入到函数并执行
24
25 #动态参数,**kwargs有多少参数接收多少参数,用字典表示
26 def func4(**kwargs):
27 print("func4",kwargs)
28
29
30 func4(name = 'wuSir',age = 18) #执行函数,传入实参
31 li = {'name':'wuSir','age':18,'gender':'male'} #定义一个字典
32 func4(**li) #把字典传入到函数并执行
33
34 #动态参数,**args/**kwargs表示即接收元组的形式又接收字典的方式,全能的~
35 def func5(*args,**kwargs):
36 print("func5_args",args)
37 print("func5_kwargs",kwargs)
38
39 func5(1,2,3,4,5,name = "wuSir",age = 18,gender = 'male')
以上代码执行结果:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/boke.py
2 func1 wuSir
3 func2 wuSir:98
4 func2 alex:88
5 func3 (11, 22, 33, 44, 55)
6 func3 (1, 2, 3, 4, 5)
7 func4 {'name': 'wuSir', 'age': 18}
8 func4 {'age': 18, 'name': 'wuSir', 'gender': 'male'}
9 func5_args (1, 2, 3, 4, 5)
10 func5_kwargs {'gender': 'male', 'name': 'wuSir', 'age': 18}
11
12 Process finished with exit code 0
内置函数
1、求绝对值:abs()
1 #绝对值
2 i = abs(-123)
3 print(i)
4 #运行结果
5 123
2、all,循环参数,如果每个元素都为真,那么all的返回值就为真
1 r = all([True,True,False])
2 print(r)
3 #执行结果
4 False
5 r = all([True,True,True])
6 print(r)
7 #执行结果
8 True
#假,0,None,'',[],(),{}, =====> 0,None,空值
3、any只要有一个为真就为真。
1 i = any([None,'',[],{},(),1])
2 print(i)
3 #执行结果
4 True
4、ascii,在对象的类中找__repr__方法,获取它的返回值。
1 class Foo:
2 def __repr__(self):
3 return "hello"
4 obj = Foo()
5 r = ascii(obj)
6 print(r)
7 #执行结果
8 hello
5、bin(),二进制
1 r = bin(11)
2 print(r)
3 #执行结果
4 0b1011
6、oct(),八进制
1 r = oct(8)
2 print(r)
3 #执行结果
4 0o10
7、int(),十进制
1 i = int(10)
2 print(i)
3 #执行结果
4 10
8、hex(),十六进制
1 r = hex(14)
2 print(r)
3 #执行结果
4 0xe
9、进制之间转换
1 int(10)
2 i = int('0b11',base=2) #二进制转换十进制
3 print("2转10",i)
4
5 i = int('11',base=8) #八进制转换十进制
6 print("8转10",i)
7
8 i = int('0xe',base=16) #十六进制转换十进制
9 print("16转10",i)
10
11 #执行结果
12
13 2转10 3
14 8转10 9
15 16转10 14
10、bytes 字节
1 #bytes('xxxx',encoding='utf-8')
2 byt = bytes('hello',encoding='utf-8')
3
4 #运行结果
5
6 <class 'bytes'> b'hello'
11、chr()数字转换成字符串
1 #只适用于ascill码
2 c = chr(66)
3 print(c)
4
5 #执行结果
6
7 B
12、ord()字符串转换成数字
1 #只适用于ascill码
2 i = ord('i')
3 print(i)
4
5 #执行结果
6
7 105
13、根据chr(),ord()内置函数写一个验证码的实例:
1 #----------验证码------------
2 #生成一个随机数
3 #数字转换成字母:chr()
4 import random
5
6 temp = "" #定义一个空的字符串等待结果传入
7
8 for i in range(6):
9 num = random.randrange(0,4) #生成0-4的随机数
10 if num == 3 or num == 1:
11 rad2 = random.randrange(0,10) #如果随机数是1或3,那么就在验证码中生成一个0-9的随机数
12 temp = temp + str(rad2)
13 else:
14 rad1 = random.randrange(65,91) #否则,验证码中生成了一个随机数
15 c1 = chr(rad1)
16 temp = temp +c1
17 print(temp)
18
19 #执行结果
20
21 BR677D #结果是随机的
14、callable判断是不是可以执行可执行返回结果为True,否则Flase
1 def f1():
2 return 123
3
4 f1()
5 r = callable(f1)
6 print(r)
7
8 #执行结果
9
10 True
15、divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数,返回结果类型为tuple
1 a = 10/3
2 print("一般",a)
3 r = divmod(10,3)
4 print("divmod",r)
5
6 #执行结果
7
8 一般 3.3333333333333335
9 divmod (3, 1)
16、eval可以执行以字符串形式的表达式
1 #一般表达形式
2 a = 1 + 3
3 print(a)
4
5 a = "1 + 3"
6 print(a)
7
8 #eval
9 a = eval("1 + 3")
10 print(a)
11
12 #执行结果
13
14 4
15 1 + 3
16 4
17、exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。
1 >>>exec 'print "hello word"'
2 hello world
3
4 exec("for i in range(10):print(i)")
5
6 #执行结果
7
8 hello word
9
10 0
11 1
12 2
13 3
14 4
15 5
16 6
17 7
18 8
19 9
18、filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。
filter()函数的参数:
第一个,自定函数名,必须的
第二个,需要过滤的列,也是必须的
1 #一般函数表达形式
2
3 def f1(x):
4 if x > 22:
5 return True
6 else:
7 return False
8 return True
9 ret = filter(f1,[11,22,33,44])
10 for i in ret:
11 print(i)
12
13 #执行结果
14
15 33
16 44
17
18 #lambda表达式
19 # ret = filter(lambda x : x > 22,[11,22,33,44])
20 for i in ret:
21 print(i)
22
23 #执行结果
24
25 33
26 44
19、map(函数,可迭代的对象),map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
1 #一般表达形式
2 def f1(x):
3 return x + 100
4
5 ret = map(f1, [1,2,3,4,5,])
6 print(ret)
7 for i in ret:
8 print(i)
9
10 #执行结果
11
12 <map object at 0x101376780>
13 101
14 102
15 103
16 104
17 105
18
19 #lambda表达形式
20 ret = map(lambda x:x + 100,[1,2,3,4,5])
21 print(ret)
22 for i in ret:
23 print(i)
24
25 #执行结果
26
27 <map object at 0x101376780>
28 101
29 102
30 103
31 104
32 105
20、获取当前代码里的所有全局变量globals
1 a = 1
2 b = 2
3
4 #运行结果
5 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/s1.py
6 {'__doc__': None, '__spec__': None, '__file__': '/Users/zk/PycharmProjects/old_boy/day05/s1.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1007a5cf8>, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', 'b': 2, 'a': 1, '__cached__': None, '__package__': None}
7
8 Process finished with exit code 0
*globals
21、获取当前代码里的所有局部变量locals
1 def foo(arg,a):
2 x = 1
3 y = "xxxxxxx"
4 for i in range(10):
5 j = 1
6 k = i
7 print(locals())
8 foo(1,2)
9
10 #执行结果
11
12 {'j': 1, 'x': 1, 'k': 9, 'arg': 1, 'a': 2, 'i': 9, 'y': 'xxxxxxx'}
13
14 #locals 是一个返回 dictionary 的函数, 并且在 dictionary 中设置一个值。
22、hash
#hash值
dic = {"sadfasdfasdfasdfasdfasdf":1}
i = hash("sadfasdfasdfasdfasdfasdf") #把一般字符串转成hash值
print(i)
23、isinstance()判断某个对象是否是某一个类创建的,如果是返回True,否则False
1 li = [11,22]
2 r = isinstance(li,int)
3 print(r)
4
5 #执行结果
6
7 False
8
9 r = isinstance(li,list)
10 print(r)
11
12 #执行结果
13
14 True
24、issubclass(),本函数用来判断类参数class是否是类型参数classinfo的子类
1 class Line:
2 pass
3
4 class RedLine(Line):
5 pass
6
7 class Rect:
8 pass
9
10 print(issubclass(RedLine,Line))
11 print(issubclass(Rect,Line))
12
13 #执行结果
14
15 True
16 False
25、iter迭代器,创建一个可以被迭代的东西
1 obj = iter([11,22,33,44])
2
3 r1 = next(obj)
4 print(r1)
5
6 #执行结果
7
8 11
26、max()取最大值
1 li = [11,22,33,44]
2 r = max(li)
3 print(r)
4
5 #执行结果
6
7 44
27、main()取最小值
1 li = [11,22,33,44]
2 r2 = min(li)
3 print(r2)
4
5 #执行结果
6
7 11
28、pow()指数
1 i = pow(2,100)
2 print(i)
3
4 #执行结果
5
6 1267650600228229401496703205376
29、round四舍五入
1 r = round(3.6)
2 print(r)
3
4 #执行结果
5
6 4
30、sum求和
1 r = sum([1,2,3,4,5])
2 print(r)
3
4 #执行结果
5
6 15
31、zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。
1 li1 = [11,22,33,44]
2 li2 = ["a","B"]
3 r = zip(li1,li2)
4 for i in r:
5 print(i)
6
7 #执行结果
8
9 (11, 'a')
10 (22, 'B')
32、sorted 函数是内建函数,他接受一个序列,返回有序的副本
1 #------------------*排序*---------------#
2 li = [1,34,41,23,23,1234]
3 print(li)
4 li.sort()
5 print(li)
6
7 a = sorted(li)
8 print(a)
9
10 char=['赵',"123", "1", "25", "65","679999999999", "a","B","alex","c" ,"A", "_", "ᒲ",'a钱','孙','李',"余", '佘',"佗", "㽙", "铱", "钲钲㽙㽙㽙"]
11
12 new_chat = sorted(char)
13 print(new_chat)
14 for i in new_chat:
15 print(bytes(i, encoding='utf-8'))
16
17 #执行结果
18
19 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/s1.py
20 [1, 34, 41, 23, 23, 1234]
21 [1, 23, 23, 34, 41, 1234]
22 [1, 23, 23, 34, 41, 1234]
23 ['1', '123', '25', '65', '679999999999', 'A', 'B', '_', 'a', 'alex', 'a钱', 'c', 'ᒲ', '㽙', '佗', '佘', '余', '孙', '李', '赵', '钲钲㽙㽙㽙', '铱']
24 b'1'
25 b'123'
26 b'25'
27 b'65'
28 b'679999999999'
29 b'A'
30 b'B'
31 b'_'
32 b'a'
33 b'alex'
34 b'a\xe9\x92\xb1'
35 b'c'
36 b'\xe1\x92\xb2'
37 b'\xe3\xbd\x99'
38 b'\xe4\xbd\x97'
39 b'\xe4\xbd\x98'
40 b'\xe4\xbd\x99'
41 b'\xe5\xad\x99'
42 b'\xe6\x9d\x8e'
43 b'\xe8\xb5\xb5'
44 b'\xe9\x92\xb2\xe9\x92\xb2\xe3\xbd\x99\xe3\xbd\x99\xe3\xbd\x99'
45 b'\xe9\x93\xb1'
46
47 Process finished with exit code 0
48
49 #结果都是通过二级制表示大小进行重新排序的!