zoukankan      html  css  js  c++  java
  • 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('0x10000')
     28 
     29 b = ascii('bx19')
     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)
    内置函数
  • 相关阅读:
    UIImagePickerController 获取相片视频
    plist文件Boolean类型读写方法
    stringstream 用法
    C++11中提供了std::bind
    图像的亮度和对比度调节
    windows C++ 全局异常捕捉函数
    windows 下多线程
    C++11 Lambda表达式(匿名函数)
    图像亮度调节--幂次变换
    SEH:结构化异常处理 学习
  • 原文地址:https://www.cnblogs.com/mocean/p/6119276.html
Copyright © 2011-2022 走看看