一、概述
          簡史
          • 1989:Guido van Rossum
          • 2008:python3.0 誕生
          • 2014:宣布2.7支持到2020
          • 2017:AI元年,Python崛起
          環(huán)境
          anaconda + pycharm
          Python3.6

          二、變量類型
          • 數(shù)字類型 Number
          • 字符串類型 str
          • 列表 list
          • 元組 tuple
          • 字典 Dictionary
          • 集合 set
          • 數(shù)字類型 Number
          • 數(shù)字類型沒有大小限制
          • 整數(shù)
          • 浮點(diǎn)數(shù)
          • 復(fù)數(shù) complex
          • 布爾值(布爾值可以跟數(shù)字直接操作)
          字符串類型 str
          表示方法:
          • 單引號(hào)
          • 雙引號(hào)
          • 三引號(hào)(三個(gè)單引號(hào)或者三個(gè)雙引號(hào))
          • 單雙引號(hào)交錯(cuò)使用
          • 格式化(利用百分號(hào)(%)) %d: 整數(shù) %s: 字符串
          print("%s新手"%"Python")
          利用format函數(shù)
          s = "{}新手".format("Python")

          None
          表示什么都沒有
          如果函數(shù)沒有返回值,可以返回 None
          用來占位


          三、內(nèi)置數(shù)據(jù)結(jié)構(gòu)
          1.list(列表)
              # 1, 創(chuàng)建空列表
              l1 = []

              # 2. 創(chuàng)建帶值的列表
              l2 = [100]

              # 3. 創(chuàng)建列表,帶多個(gè)值
              l3 = [2,3,1,4,6,4,6]

              # 4. 使用list()
              l4 = list()
          列表常用操作
          訪問
          使用下標(biāo)操作(索引)
          列表的位置是從0開始
          分片操作
          對(duì)列表進(jìn)行任意一段的截取
          l[:]
          注意截取的范圍,包含左邊的下標(biāo)值,不包含右邊的下標(biāo)值
          標(biāo)值可以為空,如果不寫,左邊下標(biāo)值默認(rèn)為0, 右邊下標(biāo)值為最大數(shù)加一,即表示截取到最后一個(gè)數(shù)據(jù)
          分片可以控制增長幅度,默認(rèn)增長幅度為1
          # 打印從下標(biāo)1開始的數(shù)字,每次隔一個(gè)
              print(l[1:6:2])
          下標(biāo)可以超出范圍,超出后不在考慮多余下標(biāo)內(nèi)容
          下標(biāo)值,增長幅度可以為負(fù)數(shù),為負(fù)數(shù),表明順序是從右往左,規(guī)定: 數(shù)組最后一個(gè)數(shù)字的下標(biāo)是-1
          分片操作是生成一個(gè)新的list
          • del: 刪除命令
          • 使用加號(hào)鏈接兩個(gè)列表
          • 使用乘號(hào)操作列表(相當(dāng)于把n個(gè)列表接在一起)
          • 成員資格運(yùn)算
          • 鏈表的遍歷

                # for in list
                a = [1,2,3,4,5]

                # 挨個(gè)打印a里邊的元素
                for i in a:
                    print(i)
                    
                # range
                # in 后面的變量要求是可以可迭代的內(nèi)容
                for i in range(1,10):
                    print(i)
                    
                # 雙層列表循環(huán)
                # a 為嵌套列表,或者叫雙層列表
                a = [["one", 1], ["two", 2], ["three", 3] ]

                for k,v in a:
                    print(k, "--", v)
                    
                # 雙層列表循環(huán)變異
                # a 為嵌套列表,或者叫雙層列表
                a = [["one", 1, "eins"], ["two", 2,"zwei"], ["three", 3,"drei"] ]
                # 這個(gè)例子說明,k,v,w的個(gè)數(shù)應(yīng)該跟解包出來的變量個(gè)數(shù)一致
                for k,v,w in a:
                    print(k, "--", v, "--",w)
          • 列表內(nèi)涵: list content
            # for 創(chuàng)建
                a = ['a''b''c']
                # 用list a創(chuàng)建一個(gè)list b
                # 下面代碼的含義是,對(duì)于所有a中的元素,逐個(gè)放入新列表b中
                b = [i for i in a]
                
                # 對(duì)a中所有元素乘以10,生成一個(gè)新list
                a = [1,2,3,4,5]
                # 用list a創(chuàng)建一個(gè)list b
                # 下面代碼的含義是,對(duì)于所有a中的元素,逐個(gè)放入新列表b中
                b = [i*10 for i in a]
                
                # 還可以過濾原來list中的內(nèi)容病放入新列表
                # 比如原有列表a, 需要把所有a中的偶數(shù)生成新的列表b
                a = [x for x in range(1,35)] #生成從1到34的一個(gè)列表
                # 把a(bǔ)中所有偶數(shù)生成一個(gè)新的列表 b
                b = [m for m in a if m % 2 == 0]
                
                # 列表生成式可以嵌套
                # 由兩個(gè)列表a,b
                a = [i for i in range(1,4)] # 生成list a

                b = [i for i in range(100,400) if i % 100 == 0]

                # 列表生成是可以嵌套,此時(shí)等于兩個(gè)for循環(huán)嵌套
                c = [  m+n for m in a for n in b]
                # 上面代碼跟下面代碼等價(jià)
                for m in a:
                    for n in b:
                        print(m+n, end="  ")

                # 嵌套的列表生城市也可以用條件表達(dá)式
                c = [  m+n for m in a for n in b if m+n < 250]
          • 關(guān)于列表的常用函數(shù)
            len:求列表長度
            a = [x for x in range(1,100)]
            print(len(a))
            max:求列表中的最大值
            b = ['man''film''python']
            print(max(b))
            min
            list:將其他格式的數(shù)據(jù)轉(zhuǎn)換成list
            # 把range產(chǎn)生的內(nèi)容轉(zhuǎn)換成list
            print(list(range(12, 19)))
            append 插入一個(gè)內(nèi)容, 在末尾追加
            a = [ i for i in range(1,5)]
            a.append(100)
            insert: 制定位置插入
            # insert(index, data), 插入位置是index前面
            a.insert(3, 666)
            del 刪除
            pop,從對(duì)位拿出一個(gè)元素,即把最后一個(gè)元素取出來
            last_ele = a.pop()
            remove:在列表中刪除指定的值的元素(如果被刪除的值沒在list中,則報(bào)錯(cuò))
            clear:清空
            reverse:翻轉(zhuǎn)列表內(nèi)容,原地翻轉(zhuǎn)
            a = [ 1,2,3,4,5]
            a.reverse()
            extend:擴(kuò)展列表,兩個(gè)列表,把一個(gè)直接拼接到后一個(gè)上
            a = [ 1,2,3,4,5]
            b = [6,7,8,9,10]
            a.extend(b)
            count:查找列表中指定值或元素的個(gè)數(shù)
            a_len = a.count(8)
            copy: 拷貝,此函數(shù)是淺拷貝
            b = a.copy()
          2.tuple(元組)
              # 創(chuàng)建空元組
              t = ()

              # 創(chuàng)建一個(gè)只有一個(gè)值的元組
              t = (1,)
              t = 1,

              # 創(chuàng)建多個(gè)值的元組
              t = (1,2,3,4,5)
              t =  1,2,3,4,5

              # 使用其他結(jié)構(gòu)創(chuàng)建
              l = [1,2,3,4,5]
              t = tuple(l)
          元組的特性
          • 是序列表,有序
          • 元組數(shù)據(jù)值可以訪問,不能修改
          • 元組數(shù)據(jù)可以是任意類型
          • list所有特性,除了可修改外,元組都具有
          • 元組的函數(shù)
          len: 獲取元組的長度
          max, min:最大最小值
          count: 計(jì)算制定數(shù)據(jù)出現(xiàn)的次數(shù)
          index:求制定元素在元組中的索引位置
          3.set(集合)
              # 集合的定義
              s = set()
              # 此時(shí),大括號(hào)內(nèi)一定要有值,否則定義出的是一個(gè)dict
              s = {1,2,3,4,5,6,7}
              
              # 如果只是用大括號(hào)定義,則定義的是一個(gè)dict類型
              d = {}
          集合的特征
          • 集合內(nèi)數(shù)據(jù)無序,即無法使用索引和分片
          • 集合內(nèi)部數(shù)據(jù)元素具有唯一性,可以用來排除重復(fù)數(shù)據(jù)
          • 集合內(nèi)的數(shù)據(jù),str, int, float, tuple,冰凍集合等,即內(nèi)部只能放置可哈希數(shù)據(jù)
          • 集合序列操作
          • 成員檢測(in,not in)
          • 遍歷
                # for 循環(huán)
                s = {4,5,"i"}

                for i in s:
                    print(i, end=" ")
                    
                # 帶有元組的集合遍歷
                s = {(1,2,3), ("just""for""fun"), (4,5,6)}

                for k,m,n in s:
                    print(k, "--", m, "--", n)
                
                for k in s:
                    print(k)
          • 集合的內(nèi)涵
                # 普通集合內(nèi)涵
                # 以下集合在初始化后自動(dòng)過濾掉重復(fù)元素
                s = {23,223,545,3,1,2,3,4,3,2,3,1,2,4,3}

                # 普通集合內(nèi)涵
                ss = {i for i in s}
                
                # 帶條件的集合內(nèi)涵
                sss = {i for i in s if i % 2 == 0}
                
                # 多循環(huán)的集合內(nèi)涵
                s1 = {1,2,3,4}
                s2 = {"just""for""fun"}

                s = {m*n for m in s2 for n in s1}

                s = {m*n for m in s2 for n in s1 if n ==2}
          • 集合函數(shù)
            len, max, min
            set:生成一個(gè)集合
            add:向集合內(nèi)添加元素
            clear
            copy
            remove:移除制定的值,直接改變原有值,如果要?jiǎng)h除的值不存在,報(bào)錯(cuò)
            discard:移除集合中指定的值,跟 remove 一樣,但是入股要?jiǎng)h除的話,不報(bào)錯(cuò)
            pop 隨機(jī)移除一個(gè)元素
          函數(shù)
          • intersection: 交集
          • difference:差集
          • union: 并集
          • issubset: 檢查一個(gè)集合是否為另一個(gè)子集
          • issuperset: 檢查一個(gè)集合是否為另一個(gè)超集
          數(shù)學(xué)操作
              s1 = {1,2,3,4,5,6}
              s2 = {5,6,7,8,9}

              s_1 = s1 - s2
              s_2 = s1 + s2

          frozen set
          :冰凍集合
          不可以進(jìn)行任何修改的集合
              # 創(chuàng)建
              s = frozenset()

          4.dict(字典)
          沒有順序的組合數(shù)據(jù),數(shù)據(jù)以鍵值對(duì)形式出現(xiàn)
              # 字典的創(chuàng)建
              # 創(chuàng)建空字典1
              d = {}

              # 創(chuàng)建空字典2
              d = dict()

              # 創(chuàng)建有值的字典, 每一組數(shù)據(jù)用冒號(hào)隔開, 每一對(duì)鍵值對(duì)用逗號(hào)隔開
              d = {"one":1, "two":2, "three":3}

              # 用dict創(chuàng)建有內(nèi)容字典1
              d = dict({"one":1, "two":2, "three":3})

              # 用dict創(chuàng)建有內(nèi)容字典2
              # 利用關(guān)鍵字參數(shù)
              d = dict(one=1, two=2, three=3)

              # 
              d = dict( [("one",1), ("two",2), ("three",3)])

          字典的特征
          • 字典是序列類型,但是是無序序列,所以沒有分片和索引
          • 字典中的數(shù)據(jù)每個(gè)都有鍵值對(duì)組成,即kv對(duì)
          • key: 必須是可哈希的值,比如int,string,float,tuple, 但是,list,set,dict 不行
          • value: 任何值
          字典常見操作
              # 訪問數(shù)據(jù)
              d = {"one":1, "two":2, "three":3}
              # 注意訪問格式
              # 中括號(hào)內(nèi)是鍵值
              print(d["one"])

              d["one"] = "eins"

              # 刪除某個(gè)操作
              # 使用del操作
              del d["one"]
              
              # 成員檢測, in, not in
              # 成員檢測檢測的是key內(nèi)容
              d = {"one":1, "two":2, "three":3}

              if 2 in d:
                  print("value")
              
              if "two" in d:
                  print("key")
              
              if ("two",2) in d:
                  print("kv")
                  
              # 按key來使用for循環(huán)
              d = {"one":1, "two":2, "three":3}
              # 使用for循環(huán),直接按key值訪問
              for k in d:
                  print(k,  d[k])
              
              # 上述代碼可以改寫成如下
              for k in d.keys():
                  print(k,  d[k])
              
              # 只訪問字典的值
              for v in d.values():
                  print(v)
              
              # 注意以下特殊用法
              for k,v in d.items():
                  print(k,'--',v)

          字典生成式
               d = {"one":1, "two":2, "three":3}

              # 常規(guī)字典生成式
              dd = {k:v for k,v in d.items()}

              # 加限制條件的字典生成式
              dd = {k:v for k,v in d.items() if v % 2 == 0}

          字典相關(guān)函數(shù)
          len, max, min, dict
          str(字典): 返回字典的字符串格式
          clear: 清空字典
          items: 返回字典的鍵值對(duì)組成的元組格式
          keys:返回字典的鍵組成的一個(gè)結(jié)構(gòu)
          values: 同理,一個(gè)可迭代的結(jié)構(gòu)
          get: 根據(jù)制定鍵返回相應(yīng)的值
              d = {"one":1, "two":2, "three":3}
              print(d.get("on333"))

              # get默認(rèn)值是None,可以設(shè)置
              print(d.get("one", 100))
          : 使用指定的序列作為鍵,使用一個(gè)值作為字典的所有的鍵的值
               l = ["eins""zwei""drei"]
              # 注意fromkeys兩個(gè)參數(shù)的類型
              # 注意fromkeys的調(diào)用主體
              d = dict.fromkeys(l, "oops")



          四、表達(dá)式
          運(yùn)算符
          • 算數(shù)運(yùn)算符
          • 比較或者關(guān)系運(yùn)算符
          • 賦值運(yùn)算符
          • 邏輯運(yùn)算符
          • 位運(yùn)算
          • 成員運(yùn)算
          • 身份運(yùn)算符
          • 算數(shù)運(yùn)算符
          • 加 +
          • 減 -
          • 乘 *
          • 除 /
          • 取余 %
          • 取商(地板除) //
          • 冪運(yùn)算 **
            ??Python 沒有自增自減運(yùn)算符
          比較運(yùn)算符
          • ==
          • !=
          • >
          • <
          • >=
          • <=
          比較的結(jié)果是布爾值(True/False)
          賦值運(yùn)算符
          • =
          • += (-=, ×=, /=, //=, %=, **=)
          邏輯運(yùn)算符
          • and 邏輯與
          • or 邏輯或
          • not 邏輯非
          結(jié)果如果是0則為False, 否則為True
          短路
          Python 中沒有異或運(yùn)算
          成員運(yùn)算符
          用來檢測某一個(gè)變量是否是另一個(gè)變量的成員
          • in
          • not in
          身份運(yùn)算符
          • is: 用來檢測兩個(gè)變量是否是同一個(gè)變量
          • is not: 兩個(gè)變量不是同一個(gè)變量
          運(yùn)算符的優(yōu)先級(jí)
          括號(hào)具有最高優(yōu)先級(jí)
            **  指數(shù) (最高優(yōu)先級(jí))
            ~ + -   按位翻轉(zhuǎn), 一元加號(hào)和減號(hào) (最后兩個(gè)的方法名為 +@ 和 -@)
            * / %  //    乘,除,取模和取整除
            + - 加法減法
            \>> <<   右移,左移運(yùn)算符
            &   位 'AND'
            ^ | 位運(yùn)算符
            <= < > >=   比較運(yùn)算符
            <> == !=    等于運(yùn)算符
            = %= /=  //= -= += *= **=    賦值運(yùn)算符
            is is not   身份運(yùn)算符
            in not in   成員運(yùn)算符
            not or and  邏輯運(yùn)算符


          五、程序結(jié)構(gòu)
          順序
          分支
          基本語法
              # 表達(dá)式后面的冒號(hào)不能少
              # 用縮進(jìn)來表示同一個(gè)代碼塊
              if 條件表達(dá)式:
                    語句1
                    語句2
                    語句3
                    ..
          雙向分支
              # if 和 else 一個(gè)層級(jí),其余語句一個(gè)層級(jí)
              if 條件表達(dá)式:
                語句1
                語句2
                
                else:
                語句1
                語句2
                
          多路分支
                if  條件表達(dá)式:
                語句1
                .
                elif 條件表達(dá)式:
                語句1
                
                elif 條件表達(dá)式:
                語句1
                

                ..
                else:
                語句1
                .
          Python 沒有 switch-case 語句
          循環(huán)
          for 循環(huán)
              for 變量 in 序列:
                語句1
                語句2
                

          range
          生成一個(gè)數(shù)字序列
          范圍:[m,n)
              # 打印 1~10
              for i in range(1,11):
                  print(i) 
          for-else
          當(dāng)for循環(huán)結(jié)束的時(shí)候,會(huì)執(zhí)行else語句
          else語句可選
          while 循環(huán)
                while 條件表達(dá)式:
                語句塊

                #另外一種表達(dá)方法
                while  條件表達(dá)式:
                語句塊1
                else
                語句塊2
          循環(huán)之break,continue,pass
          break: 無條件結(jié)束整個(gè)循環(huán),簡稱循環(huán)猝死
          continue:無條件結(jié)束本次循環(huán),從新進(jìn)入下一輪循環(huán)
          pass:表示略過,通常用于站位,沒有跳過功能



          六、函數(shù)
          def關(guān)鍵字
          代碼縮進(jìn)
              # 定義
              def func():
                  print("這是一個(gè)函數(shù)")
              # 調(diào)用
              func()
          函數(shù)的參數(shù)和返回值
          參數(shù): 負(fù)責(zé)給函數(shù)傳遞一些必要的數(shù)據(jù)或者信息
          • 形參(形式參數(shù)): 在函數(shù)定義的時(shí)候用到的參數(shù)沒有具體值,只是一個(gè)占位的符號(hào),成為形參
          • 實(shí)參(實(shí)際參數(shù)): 在調(diào)用函數(shù)的時(shí)候輸入的值
          返回值: 函數(shù)的執(zhí)行結(jié)果
          • 使用 return 關(guān)鍵字
          • 如果沒有 return ,默認(rèn)返回一個(gè) None
          • 函數(shù)一旦執(zhí)行 return 語句,則無條件返回,即結(jié)束函數(shù)的執(zhí)行
              # return語句的基本使用
              # 函數(shù)打完招呼后返回一句話
              def hello(person):
                  print("{0}, 你腫么咧".format(person))
                  print("Sir, 你不理額額就走咧")
              
              return "我已經(jīng)跟{0}打招呼了,{1}不理我".format(person, person)
            
              p = "明月"
              rst = hello(p)
              print(rst)
              # 定義一個(gè)函數(shù),打印一行九九乘法表
              def printLine(row):
                  for col in range(1, row+1):
                      # print函數(shù)默認(rèn)任務(wù)打印完畢后換行
                      print( row * col, end=" ")
                  print("")
              # 九九乘法表
              # version 2.0
              for row in range(1,10):
                  printLine(row)
          參數(shù)詳解
          • 參數(shù)分類
          • 普通參數(shù)
          • 默認(rèn)參數(shù)
          • 關(guān)鍵字參數(shù)
          • 收集參數(shù)
          • 普通參數(shù)
          參見上例
          定義的時(shí)候直接定義變量名
          調(diào)用的時(shí)候直接把變量或者值放入指定位置
               def 函數(shù)名(參數(shù)1, 參數(shù)2,.):
                  函數(shù)體

              # 調(diào)用
              函數(shù)名(value1, value2,.)
          默認(rèn)參數(shù)
          形參帶有默認(rèn)值
          調(diào)用的時(shí)候,如果沒有對(duì)相應(yīng)形參賦值,則使用默認(rèn)值
              def func_name(p1=v1, p2=v2.):
                  func_block

              #調(diào)用1
              func_name()

              # 調(diào)用2
              value1 = 100
              value2 = 200
              func_name(value1,value2)
          關(guān)鍵字參數(shù)
              def func(p1=v1, p2=v2..):
                    func_body

              # 調(diào)用函數(shù):
                func(p1=value1, p2=value2.)
          收集參數(shù)
          把沒有位置,不能和定義時(shí)的參數(shù)位置相對(duì)應(yīng)的參數(shù),放入一個(gè)特定的數(shù)據(jù)結(jié)構(gòu)中
                def func(*args):
                    func_body
                # 按照list使用方式訪問args得到傳入的參數(shù)
                # 調(diào)用:
                func(p1, p2, p3, ..)
          收集參數(shù)混合調(diào)用的順序問題
          收集參數(shù),關(guān)鍵字參數(shù),普通參數(shù)可以混合使用
          使用規(guī)則就是,普通參數(shù)和關(guān)鍵字參數(shù)優(yōu)先
          定義的時(shí)候一般找普通參數(shù),關(guān)鍵字參數(shù),收集參數(shù) tuple,收集參數(shù) dict
          返回值
          函數(shù)和過程的區(qū)別
          • 有無返回值
          • 需要用return顯示返回內(nèi)容,
          • 如果沒有返回,則默認(rèn)返回None
          遞歸函數(shù)
          python對(duì)遞歸深度有限制,超過限制報(bào)錯(cuò)
              # 斐波那契額數(shù)列
              # 一列數(shù)字,第一個(gè)值是1, 第二個(gè)也是1, 從第三個(gè)開始,每一個(gè)數(shù)字的值等于前兩個(gè)數(shù)字出現(xiàn)的值的和
              # 數(shù)學(xué)公式為: f(1) = 1, f(2) = 1, f(n) = f(n-1) + f(n-2)
              # 例如: 1,1,2,3,5,8,13.。。。。。。。。

              # n表示求第n個(gè)數(shù)子的斐波那契數(shù)列的值
              def fib(n):
                  if n == 1:
                      return 1
              
                  if n == 2:
                      return 1
              
                  return fib(n-1) + fib(n-2)

              print(fib(3))
              print(fib(10))

          漢諾塔問題
          規(guī)則:
          每次移動(dòng)一個(gè)盤子
          任何時(shí)候大盤子在下面,小盤子在上面
          方法:
          n=1: 直接把A上的一個(gè)盤子移動(dòng)到C上, A->C
          n=2:
          把小盤子從A放到B上, A->B
          把大盤子從A放到C上, A->C
          把小盤子從B放到C上, B->C
          n=3:
          把A上的兩個(gè)盤子,通過C移動(dòng)到B上去, 調(diào)用遞歸實(shí)現(xiàn)
          把A上剩下的一個(gè)最大盤子移動(dòng)到C上, A->C
          把B上兩個(gè)盤子,借助于A,挪到C上去, 調(diào)用遞歸
          n = n:
          把A上的n-1個(gè)盤子,借助于C,移動(dòng)到B上去,調(diào)用遞歸
          把A上的最大盤子,也是唯一一個(gè),移動(dòng)到C上,A->C
          把B上n-1個(gè)盤子,借助于A,移動(dòng)到C上, 調(diào)用遞歸
               def hano(n, a, b, c):
                  '''
                  漢諾塔的遞歸實(shí)現(xiàn)
                  n:代表幾個(gè)盤子
                  a:代表第一個(gè)塔,開始的塔
                  b:代表第二個(gè)塔,中間過渡的塔
                  c:代表第三個(gè)塔, 目標(biāo)塔
                  
          '''
                  if n == 1:
                      print(a, "-->", c)
                      return None
                  '''
              
                  if n == 2:
                      print(a, "-->", b)
                      print(a, "-->", c)
                      print(b, "-->", c)
                      return None
                  
          '''
                  # 把n-1個(gè)盤子,從a塔借助于c塔,挪到b塔上去
                  hano(n-1, a, c, b)
                  print(a, "-->", c)
                  # 把n-1個(gè)盤子,從b塔,借助于a塔,挪到c塔上去
                  hano(n-1,b, a, c)
              a = "A"
              b = "B"
              c = "C"

              n = 1
              hano(n, a, b, c)
              
              n = 2
              hano(n, a, b, c)
              
              n = 3
              hano(n, a, b, c)
          查找函數(shù)幫助文檔
          help 函數(shù)
          help(print)
          使用__doc__
              def stu(name, age):
                  '''
                  這是文檔的文字內(nèi)容
                  :param name: 表示學(xué)生的姓名
                  :param age: 表示學(xué)生的年齡
                  :return: 此函數(shù)沒有返回值
                  
          '''
                  pass
                  
              print(help(stu))
              print("*" * 20)
              print(stu.__doc__)



          七、變量作用域
          分類:按照作用域分類
          • 全局(global): 在函數(shù)外部定義
          • 局部(local):在函數(shù)內(nèi)部定義
          LEGB原則
          • L(Local)局部作用域
          • E(Enclosing function locale)外部嵌套函數(shù)作用域
          • G(Global module)函數(shù)定義所在模塊作用域
          • B(Buildin): python內(nèi)置魔抗的作用域
          提升局部變量為全局變量(使用global)
              def fun():
                  global b1
                  b1 = 100
                  print(b1)
                  print("I am in fun")
                  # b2的作用范圍是fun
                  b2 = 99
                  print(b2)
              
              fun()
              print(b1)

          globals, locals函數(shù)
          可以通過globals和locals顯示出局部變量和全局變量
              # globals 和 locals
              # globals 和 locals 叫做內(nèi)建函數(shù)
              a = 1
              b = 2

              def fun(c,d):
                  e = 111
                  print("Locals={0}".format(locals()))
                  print("Globals={0}".format(globals()))
              
              fun(100, 200)

          eval()函數(shù)
          把一個(gè)字符串當(dāng)成一個(gè)表達(dá)式來執(zhí)行, 返回表達(dá)式執(zhí)行后的結(jié)果
          eval(string_code, globals=None, locals=None)
          exec()函數(shù)
          跟eval功能類似, 但是,不返回結(jié)果
          exec(string_code, globals=None, locals=None)
          posted on 2018-06-03 19:24 Ying-er 閱讀(846) 評(píng)論(0)  編輯  收藏 所屬分類: Python

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 会东县| 丰台区| 台中市| 安阳市| 万荣县| 都匀市| 白城市| 金湖县| 咸宁市| 日土县| 金门县| 沂水县| 崇阳县| 靖安县| 永新县| 北宁市| 盘山县| 朝阳县| 酒泉市| 犍为县| 石门县| 射阳县| 临洮县| 上饶市| 哈密市| 澄迈县| 乐陵市| 且末县| 梅州市| 建平县| 沙洋县| 二手房| 长沙市| 化隆| 江西省| 西宁市| 顺义区| 平陆县| 根河市| 睢宁县| 射阳县|