Python全栈开发【基础三】

本节内容:

  • 函数(全局与局部变量)
  • 递归
  • 内置函数

函数

一、定义和使用

函数最重要的是减少代码的重用性和增强代码可读性

1 def 函数名(参数):
2         
3     ...
4     函数体
5     ...
6     返回值

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

总结使用函数的好处:

1.减少代码重用

2.保持一致性,易维护

3.可扩展性

返回值

 1 def 发送邮件():
 2         
 3     发送邮件的代码...
 4     
 5     if 发送成功:
 6 
 7         return True
 8 
 9     else:
10 
11         return False
12 
13 while True:
14         
15     # 每次执行发送邮件函数,都会将返回值自动赋值给result
16 
17     # 之后,可以根据result来写日志,或重发等操作
18 
19     
20     result = 发送邮件()
21 
22     if result == False:
23 
24         记录日志,邮件发送失败...

 

二、参数

1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

1 def calc(x,y)   #x,y即为形参
2     res = x**y
3     return res
4 
5 c = calc(2,3)  #2,3即为实参
6 print(c)

3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)

注:位置参数必须在关键字参数前面

 

 1 def calc(x,y):  
 2     res = x**y
 3     return res
 4  
 5 c = calc(y=2,x=3)  #关键字参数
 6 print(c)
 7 
 8 
 9 
10 def calc(x,y):  
11     res = x**y
12     return res
13  
14 c = calc(2,y=3)  #2为位置参数,y=3为关键字参数
15 print(c)  

 

4.默认参数

1 def calc(x,y=3):  #y=3为默认参数后面函数可不传值
2     res = x**y
3     return res
4 
5 c = calc(3) #可不传y值
6 print(c)

 

5.参数组

 1 ###############列表*args
 2 
 3 def func(*args):
 4     print args
 5 
 6 # 执行方式一
 7 func(11,22,33,55,66)
 8 
 9 # 执行方式二
10 li = [11,22,33,55,66]
11 func(*li)
12 
13 
14 ###############字典**kwargs
15 
16 def func(**kwargs):
17     print kwargs
18 
19 
20 # 执行方式一
21 func(name='ocean',age=18)
22 
23 # 执行方式二
24 li = {'name':'ocean', age:18, 'job':'python'}
25 func(**li)

 

三、 局部变量与全局变量

全局变量在函数里可以随便调用,但要修改就必须用 global 声明

 1 ##########全局变量与局部变量########
 2 NAME = "aa"
 3 
 4 def cn():
 5     global NAME
 6     NAME = "mm"
 7     print(">>>>",name)
 8 print(name)   #输出aa
 9 cn()          #>>>mm
10 print(name)   #mm
11 
12 
13 ##########
14 #本例重点是函数只有调用时才运行
15 name = "aa"   
16 #全局变量一般为大写用于区分局部变量,这里临时使用小写
17 def aa():
18     name = "bb"
19     def bb():
20         nonlocal name  
21         #nonlocal用来在函数或其他作用域中使用外层(非全局)变量
22         name = "cc"
23     bb()
24     print(name)
25 print(name)
26 aa()
27 print(name)    

 

递归

在函数内部,可以调用其他函数。如果一个函数在内部调用函数本身,这个函数就是递归函数。

递归特性:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出,浪费内存

 1 def calc(n):
 2     print(n)
 3     if int(n/2) ==0:
 4         return n
 5     return calc(int(n/2))
 6  
 7 calc(10)
 8  
 9 输出:
10 10
11 5
12 2
13 1

 

内置函数

 

  1 ###### 求绝对值 #######
  2 
  3 a = abs(-95)
  4 
  5 print(a)
  6 
  7  
  8 
  9 ###### 只有一个为假就为假 ########
 10 
 11 a = all([True,True,False])
 12 
 13 print(a)
 14 
 15  
 16 
 17 ###### 只有一个为真就为真 ########
 18 
 19 a = any([False,True,False])
 20 
 21 print(a)
 22 
 23  
 24 
 25 ####### 返回一个可打印的对象字符串方式表示 ########
 26 
 27 a = ascii('0x\10000')
 28 
 29 b = ascii('b\x19')
 30 
 31 print(a,b)
 32 
 33  
 34 
 35 ######### 将整数转换为二进制字符串 ############
 36 
 37 a = bin(95)
 38 
 39 print(a)
 40 
 41  
 42 
 43 ######### 将一个数字转化为8进制 ##############
 44 
 45 a = oct(95)
 46 
 47 print(a)
 48 
 49  
 50 
 51 ######### 将一个数字转化为10进制 #############
 52 
 53 a = int(95)
 54 
 55 print(a)
 56 
 57  
 58 
 59 ######### 将整数转换为16进制字符串 ##########
 60 
 61 a = hex(95)
 62 
 63 print(a)
 64 
 65  
 66 
 67 ######### 转换为布尔类型 ###########
 68 
 69 a = bool('')
 70 
 71 print(a)
 72 
 73  
 74 
 75 ######### 转换为bytes ########
 76 
 77 a = bytes('淡定',encoding='utf-8')
 78 
 79 print(a)
 80 
 81  
 82 
 83 ######## chr 返回一个字符串,其ASCII码是一个整型.比如chr(97)返回字符串'a'。参数i的范围在0-255之间。 #######
 84 
 85 a = chr(88)
 86 
 87 print(a)
 88 
 89  
 90 
 91 ######## ord 参数是一个ascii字符,返回值是对应的十进制整数 #######
 92 
 93 a = ord('X')
 94 
 95 print(a)
 96 
 97  
 98 
 99 ######## 创建数据字典 ########
100 
101 dict({'one': 2, 'two': 3})
102 
103 dict(zip(('one', 'two'), (2, 3)))
104 
105 dict([['two', 3], ['one', 2]])
106 
107 dict(one=2, two=3)
108 
109  
110 
111 ###### dir 列出某个类型的所有可用方法 ########
112 
113 a = dir(list)
114 
115 print(a)
116 
117  
118 
119 ###### help 查看帮助文档 #########
120 
121 help(list)
122 
123  
124 
125 ####### 分别取商和余数 ######
126 
127 a = divmod(9,5)
128 
129 print(a)
130 
131  
132 
133 ##### 计算表达式的值 #####
134 
135 a = eval('1+2*2')
136 
137 print(a)
138 
139  
140 
141 ###### exec 用来执行储存在字符串或文件中的Python语句 ######
142 
143 exec(print("Hi"))
144 
145 exec("print(\"hello, world\")")
146 
147  
148 
149 ####### filter 过滤 #######
150 
151 li = [1,2,3,4,5,6]
152 
153 a = filter(lambda x:x>3,li)
154 
155 for i in a:print(i)
156 
157  
158 
159 ##### float 浮点型 #####
160 
161 a = float(1)
162 
163 print(a)
164 
165  
166 
167 ###### 判断对象是不是属于int实例 #########
168 
169 a = 5
170 
171 b = isinstance(a,int)
172 
173 print(b)
174 
175  
176 
177 ######## globals 返回全局变量 ########
178 
179 ######## locals 返回当前局部变量 ######
180 
181 name = 'nick'
182 
183 def hi():
184 
185     a = 1
186 
187     print(locals())
188 
189 hi()
190 
191 print(globals())
192 
193  
194 
195 ########## map 遍历序列,对序列中每个元素进行操作,最终获取新的序列。 ##########
196 
197 li =  [11,22,33]
198 
199 def func1(arg):
200 
201     return arg + 1  #这里乘除都可以
202 
203 new_list = map(func1,li)  #这里map调用函数,函数的规则你可以自己指定,你函数定义成什么他就做什么操作!
204 
205 for i in new_list:print(i)
206 
207  
208 
209 ###### max 返回集合中的最大值 ######
210 
211 ###### min 返回集合中的最小值 ######
212 
213 a = [1,2,3,4,5]
214 
215 s = max(a)
216 
217 print(s)
218 
219 n = min(a)
220 
221 print(n)
222 
223  
224 
225 ####### pow 返回x的y次幂 ########
226 
227 a = pow(2,10)
228 
229 print(a)
230 
231 a = pow(2,10,100)   #等于2**10%100,取模
232 
233 print(a)
234 
235  
236 
237 ######## round 四舍五入 ########
238 
239 a = round(9.5)
240 
241 print(a)
242 
243  
244 
245 ######## sorted 队集合排序 ########
246 
247 char=['',"123", "1", "25", "65","679999999999", "a","B","nick","c" ,"A", "_", "",'a']
248 
249 new_chat = sorted(char)
250 
251 print(new_chat)
252 
253 for i in new_chat:
254 
255     print(bytes(i, encoding='utf-8'))
256 
257  
258 
259 ######## sum 求和的内容 ########
260 
261 a = sum([1,2,3,4,5])
262 
263 print(a)
264 
265 a = sum(range(6))
266 
267 print(a)
268 
269  
270 
271 ######## __import__ 通过字符串的形式,导入模块 ########
272 
273 # 通过字符串的形式,导入模块。起个别名ccas
274 
275 comm = input("Please:")
276 
277 ccas = __import__(comm)
278 
279 ccas.f1()
280 
281 # 需要做拼接时后加 fromlist=True
282 
283 m = __import__("lib."+comm, fromlist=True)
内置函数

 

posted @ 2016-11-30 22:09  龍龘龖  阅读(224)  评论(0编辑  收藏  举报