Python基本文法

8466 ワード

1、データ型
  • 単純タイプ
  • 1、整数2;浮動小数点2.1;文字列「abc」;空None;ブール値True/False、大文字と小文字に注意!2、ブール値はand/or/notで演算でき、JSの&&/|/!
  • 複雑なタイプ
  • 1、配列list=['a','b'];元祖tuple=('a','b');オブジェクトdict={'Michael':95,'Bob':75,'Tracy':85};集合set=set([1,2,3])2、list基本操作
    //   
    array = [1,2,3]
    range_list = list(range(100))  // 0-99   list
    //   
    array[0]
    array[-1] //      
    //   
    len(array)
    //   
    array.append(4)
    //         
    array.pop(i) //         
    //       
    array.insert(4,5)  //    4     5
    //     
    L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
    L[0:3] //     
    L[:5:2] //  5  ,  2   
    //      
    [x * x for x in range(1, 11) if x % 2 == 0] // [4, 16, 36, 64, 100]
    

    3、tupleはlistと似ていますが、唯一の違いはtupleが付与されると変更が許されず、その要素はreadonlyです.tupleには小さな落とし穴があることに注意してください.
    t = (1) //     t=1
    t=(1,) //         tuple
    

    4、dict基本操作
    dict2={'Michael': 95, 'Bob': 75, 'Tracy': 85} //   
    dict2.get('Bob',-1)  // 75 ,  ,      ,     -1
    dict2.pop('Bob')  //    
    //   
    d = {'a': 1, 'b': 2, 'c': 3}
    for key,value in d.items():
        print(key,value)
    
    { k: v for k, v in vars(namespace).items() if v } //      
    

    5、set基本操作setの要素は重複しない
    s = set([1, 2, 3])
    s.add(4)
    s.remove(4)
    

    2、常用文法
  • 変数Pythonの変数宣言はキーワードではなく、変数名を直接書けば
  • です.
    a=1
    b=1.2
    c='test'
    d=True and False
    e=None
    classmates = ['Michael', 'Bob', 'Tracy']
    
  • 関数
  • //   
    def my_abs(x):
        if x >= 0:
            return x
        else:
            return -x
    //   
    my_abs(3)
    

    1、関数の体内はpassで何もしないことを表すことができて、ただプレースホルダとして;returnは、2、関数パラメータ-位置パラメータを返すために使用します.
    // x,n       
    def power(x, n):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s
    

    3、関数パラメータ-デフォルトパラメータ
    def power(x, n=2):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s
    

    4、関数パラメータ-可変パラメータ、JSの残りのパラメータに類似する
    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    
    //   
    calc(1,2,3,4)
    

    5、関数パラメータ-キーワードパラメータ
    def person(name, age, **kw):
        print('name:', name, 'age:', age, 'other:', kw)
    
    person('Bob', 35, city='Beijing') // name: Bob age: 35 other: {'city': 'Beijing'}
    person('Adam', 45, gender='M', job='Engineer') // name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    
  • フロー制御
  • if age >= 6:
        print('teenager')
    elif age >= 18:
        print('adult')
    else:
        print('kid')
    
  • サイクル
  • // while   
    sum = 0
    n = 99
    while n > 0:
        sum = sum + n
        n = n - 2
    print(sum)
    
    // for in   
    sum = 0
    for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
        sum = sum + x
    print(sum)
    
    
  • クラス
  • class Student(object):      //    object
        name2 = 'Student'  //    ,      ,         ,          ,              
        def __init__(self, name, score,class='302'):   //     
            self.name = name    //     ,         
            self.score = score
            self.__class = class  //     ,         
    
        def print_score(self):        //     
            print('%s: %s' % (self.name, self.score))
    
        def get_grade(self):
            if self.score >= 90:
                return 'A'
            elif self.score >= 60:
                return 'B'
            else:
                return 'C'
    
    //     
    student = Student('FYC',100)
    
  • 型判定
  • 常にisinstance()判定タイプを優先し、指定したタイプとそのサブクラスを「一網打尽」することができます.
    //         type()  
    type(123)  // 
    type(123)==int  // True
    type('str')  // 
    type(None) // 
    type(abs) // 
    type(abs)==types.BuiltinFunctionType
    type(a) // 
    
    //    class   ,    isinstance()  
    isinstance('a', str) // True
    isinstance(a,Animal) // True
    isinstance([1, 2, 3], (list, tuple)) // True,      list/tuple     
    

    dir(変数)を使用して、変数に対応するオブジェクトのすべての使用可能なメソッドを表示できます.
    dir('ABC') // ['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']
    
  • 異常捕獲
  • //     
    def foo(s):
        n = int(s)
        if n==0:
            raise ValueError('invalid value: %s' % s)
        return 10 / n
    
    //     
    def main():
        try:
            bar('0')
        except Exception as e:
            print('Error:', e)
        finally:
            print('finally...')
    
  • モジュールインポート/エクスポート
  • //     
    import sys
    //     
    from datetime import datetime  //   datetime      datetime   
    //   
    __all__ = ['sys', '_static', 'test_func']
    

    デフォルトでは、1つのモジュール内のすべては_先頭のプロパティがエクスポートされました.モジュールファイルの最上位の任意の場所にある場合は、特別なリストを定義します.all__ = ['sys','_static','test_func']では、__のみall__ のプロパティがエクスポートされます
    3、常用内蔵モジュール及び三方モジュール
  • sysシステムパラメータ、入出力等に関する
  • sys.argv //   list,           ,          
    sys.version // python   
    sys.exit() //   python   
    sys.stdout.flush() //         
    
  • os.pathファイル操作関連
  • path.join(path1,path2)
    path.exists(path)
    path.isfile(path)
    path.isdir(path)
    
  • zipfile zipファイル
  • を作成する
    zip_ref = zipfile.ZipFile(file, 'r')
    zip_ref.extractall(folder_name)  //                    
    zip_ref.close()
    
  • argparseコマンドライン解析、JSのcommander.に類似js
  •     parser = argparse.ArgumentParser(description='xx CI Build Tool')
        parser.add_argument('-b', '--build-number',
                           help='build number', default='')
        parser.add_argument('-p', '--platform',
                           help='platform', default='mac')
    
        args = parser.parse_args()
    
        build_number = args.build_number
        platform = args.platform
    
  • pathlibより高いレベルのpath処理
  •  from pathlib import Path
    p = Path('.')   // p             
    [x for x in p.iterdir() if x.is_dir()]
    
  • re正規表現
  • prog = re.compile(pattern)
    result = prog.match(string)
    
  • yaml yamlファイルとpython辞書の相互翻訳ツールは、pip install yaml
  • を追加でインストールする必要があります.
    import yaml
    f = open(r'E:\AutomaticTest\Test_Framework\config\config.yml')
    y = yaml.load(f)
    print (y)
    
  • pystache python版Mustache、pip install pystache
  • を追加インストールする必要があります
    import pystache
    print pystache.render('Hi {{person}}!', {'person': 'Mom'})  // Hi Mom
    
  • requestより便利なリクエストの送信、pip install request
  • の追加インストールが必要
    import request
    requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 
    (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'},params={"test",1},cookies={"test":2})
    
    upload_files = {'file': open('report.xls', 'rb')}
    r = requests.post(url, files=upload_files) //     
    
  • getoptコマンドライン処理
  • #   
    getopt.getopt(args, shortopts, longopts=[])
    # args            ,      ,    sys.argv  
    # shortopts             ?        :python test.py -h #       
    # longopts             ?        :python test.py -# help #       
    
    #   
    opts,args = getopt.getopt(sys.argv[1:],'-h-f:-v',['help','filename=','version'])
    for opt_name,opt_value in opts:
        if opt_name in ('-h','--help'):
            print("[*] Help info")
            exit()
        if opt_name in ('-v','--version'):
            print("[*] Version is 0.01 ")
            exit()
        if opt_name in ('-f','--filename'):
            fileName = opt_value
            print("[*] Filename is ",fileName)
            # do something
            exit()
    
    #   
    python3.5 test.py --filename=test   #   :[*] Filename is  test
    

    '-h-f:-v'を定義し、-fの後ろに「:」が1つ追加されました.この":"は、現在のパラメータが値を持つことを表し、パラメータ名+パラメータ値のパラメータであり、opts変数に保存されます.長いパラメータ名の方式と短いパラメータの差は多くなく、唯一の違いは長いパラメータが値を受信する場合は、後に「=」を付けなければならないことです.