Python基础篇【第六篇】:函数补充

三元运算

三元运算(三目运算),是简单的条件的语句缩写。

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 #结果都是通过二级制表示大小进行重新排序的!
时间: 2024-10-10 13:01:43

Python基础篇【第六篇】:函数补充的相关文章

python基础知识第六篇(知识点总结)

####################### 整理 ################# # 一.数字# int(..) # 二.字符串# replace(替换)/find/join/strip(移除)/startswith/split(分割)/upper(转换为大写的)/lower(转换为小写)/format(占位符替换为指定的值)# tempalte = "i am {name}, age : {age}"# # v = tempalte.format(name='alex',ag

Python进阶之第六篇-面向对象编程

面向对象进阶篇: 初级篇中我们介绍了面向对象基本知识: 1.面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 2.介绍了类中的对象.方法和属性及类中内置的方法 3.类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 4.对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 5.面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 一.类的成员: 类的成员可以分为三大类:字段.

python基础汇总(六)

这是最后一篇python基础汇总了. 在进入正题之前,忍不住唠叨一句: python的前途越来越光明,随着马云的无人酒店,无人海底捞陆续面世,python重要性越来越大. 未来是属于人工智能的,完成人工智能的代码是python自动化代码. 我们先来复习一下列表和字典的一些基础知识. 一.列表 ten_things="Apples Oranges Crows Telephones Light Sugar" print("Wait there's not 10 things in

python 全栈 python基础 (十三)匿名函数 与 内置函数

一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是参数,可以有多个,用逗号隔开:冒号右边的为表达式,需要注意的是只能有一个表达式.由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收.  3.注意点:lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值.lambda 函数不能包含命令,包含

Python基础学习总结(六)

8.函数 函数是带名字的代码块,用于完成具体的工作.def函数定义,指出函数名.定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解. 要执行函数定义的特定任务,可调用该函数.在程序中多次执行同一项任务时,无需反复编写完成该任务的代码,只需调用执行该任务的函数,让Python运行其中的代码. 高阶函数英文叫Higher-order function

(记录)python篇:六_ 函数2

#递归函数 #函数内部,一个函数可以调用自身本身,这个函数就是递归函数. def num(x):  #第一步     return num_a(n,1) #第二部 def num_a(a,b): #与第二部对应,如果此时的num_a与上一步定义的函数不对应,则代码报错.     if a==1:    #(最后一部判断)由于a==3,所以a==1不成立,直到a==1时才返回b,循环才结束.         return b     return num_a(a-1,a*b)#此时循环结束,但是判

Python自动化 【第六篇】:Python基础-面向对象

  目录: 面向过程VS面向对象 面向对象编程介绍 为什么要用面向对象进行开发 面向对象的特性:封装.继承.多态 面向过程 VS 面向对象 面向过程编程(Procedural Programming) 面向过程编程依赖一个procedure包含一组要被进行计算的步骤, 面向过程又被称为top-down languages, 就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 .基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再

(记录)python篇:六_ 函数1

函数 一:自定义函数 def num(x):        #def定义函数代码,num自定义函数的名称,(x)函数的参数,也可以是                               a,b,x),也可以定义为空         ......        #中间可以做为判断if,也可以用循环可其他之类的定义等.      return x       #返回的函数,可以是多和return a,b,x #return和print的区别: return 跳出当前循环并打印 print 打

Python开发【第六篇】:Python基础条件和循环

目录 一.if语句 1.功能 2.语法 单分支,单重条件判断 多分支,多重条件判断 if + else 多分支if + elif + else 语句小结 + 案例 三元表达式 二.while语句 1.功能 2.语法 基本语法 计数循环 无限循环 while与break,continue,else连用 while语句小结 + 案例 三.for语句 1.功能 2.语法 基本语法 遍历序列类型 遍历可迭代对象或迭代器 for基于range()实现计数循环 for与break,continue,else

Python开发【第六篇】内置函数 和 匿名函数

阅读目录 一. 匿名函数 1.什么是匿名函数? 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 #匿名就是没有名字 def func(x,y,z=1): return x+y+z #匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字 func= lambda x,y,z=1:x+y+z func(1,2,3) #让其有名字就没有意义 原文地址:https://www.cnblogs.com/wangfeng