Python 3ノート-廖雪峰

7730 ワード

  • エスケープ:rで表される"内部の文字列は、デフォルトでは
  • にエスケープされません.
  • 複数行表示:''''......'を使用(注:一重引用符)
  • 床除:10/3 3 3の2つの整数の除算は依然として整数
  • である.
  • 文字コード
    ord('A') #65
    chr(66) #'B'
    # -*- coding: utf-8 -*- # , Python utf-8
    'Hi, %s, you have $%d.' % ('Michael', 1000000) # %s ,%d
  • データ型変換:int(「65」)、float(「843.2 f」)
  • ヘルプメソッド:help(abs)
  • 関数の戻り値:関数は複数の値を返すことができ、実際にはtupleを返すことができます.構文上、tupleを返すとカッコ
  • を省略できます.
  • デフォルトパラメータ:def power(x,n=2):デフォルト値を含むパラメータ
  • を定義できます.
  • 可変パラメータ:def calc(*numbers):この関数を呼び出すと、listまたはtupleを渡す場合は、任意のパラメータを入力できます.
  • キーワードパラメータ:0個または任意のパラメータ名を含むパラメータを入力できます.これらのキーワードパラメータは、関数内部でdict 10.1キーワードパラメータ
    list = [0,1,2]
    calc(*list)
    10.2名前付きキーワードパラメータとして自動的に組み立てられます.cityとjobのみがキーワードパラメータとして受信されます.×号後更パラメータ名
    >>> def person(name,age,**kw):
    ...   print('name: ',name,' age: ',age,' other: ',kw);
    ... 
    >>> person("twx",25,city="Suzhou")
    name:  twx  age:  25  other:  {'city': 'Suzhou'}
    >>> person("twx",25,gender='man',qq='4347367')
    name:  twx  age:  25  other:  {'qq': '4347367', 'gender': 'man'}
    
  • 反復:for..in...11.1反復辞書
            >>> def person(name,age,*,city,job):
            ...     print(name, age, city ,job)
            ... 
            >>> person("twx",24) ##            
            Traceback (most recent call last):
            File "", line 1, in 
            TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'
            >>> person("twx",24,city="suzhou",job="java")
            twx 24 suzhou java
    
    11.2反復tuple:11.3反復同時にlistの下付き文字を取得:`for i,value in enumerate([‘a’,’b’,’c’])#enumerate
    for k in dic: 
    for v in dic.values():
    for k,v in dic.items():
  • を使用
  • ジェネレータgenerate:(x*x for x in range(1,5))注意リストジェネレータと区別:[]関数定義にyieldキーワードが含まれている場合、この関数は通常の関数ではなくgenerator:
     >>> for i,val in enumerate(['a','b','c']):
        ...     print(i, val)
        ... 
        0 a
        1 b
        2 c
  • for inで反復可能なオブジェクトは、反復可能オブジェクトIterableと呼ばれるlsit tuple dict set str generatorであり、isinstance()を使用してisinstance([],Iterable)を検出することで、iter()でIterableをIteratorオブジェクト
  • に変換することができる.
  • map/reduce 14.1 map()は、関数とIterableの2つのパラメータを受信します.mapは,入力された関数をシーケンスの各要素に作用させ,結果をIteratorとして返す.
    def fib(max):
        n, a, b = 0, 0, 1
        while n < max:
            yield b
            a, b = b, a + b
            n = n + 1
        return 'done'
    14.2 reduce()は、1つの関数を1つのシーケンスに作用し、この関数は2つのパラメータを受信しなければならない.
    def char2num(s):
    ...     return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
    ... 
    >>> map(char2num,'12579')
    0x7f32459b3780>
    >>> list(map(char2num,'12579'))
    [1, 2, 5, 7, 9]
  • filter():関数とシーケンスを受信する.filter()は、入力された関数を各要素に順次作用させ、戻り値がTrueかFalseかに基づいて要素を保持または破棄するかを決定します.
    >>> from functools import reduce
    >>> def add(x, y):
    ...     return x + y
    ...
    >>> reduce(add, [1, 3, 5, 7, 9])
    25
  • ソート関数sorted():16.1一般用法
    def is_odd(n):
        return n % 2 == 1
    
    list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
    
    #   : [1, 5, 9, 15]
    
    16.2カスタム
    >>> sorted([36, 5, -12, 9, -21])
    [-21, -12, 5, 9, 36]
  • 匿名関数lambda x: x * xは、実際には、
    >>> sorted([36, 5, -12, 9, -21], key=abs)
    [5, 9, -12, -21, 36]
    キーワードlambdaが匿名関数を表し、コロンの前のxが関数パラメータを表す.匿名関数には、returnを書かずに1つの式しか書けないという制限があります.
  • 偏関数partial
  • def f(x):
        return x * x

    functools.partialの役割は、1つの関数のいくつかのパラメータを固定(つまりデフォルト値を設定)して、新しい関数を返して、この新しい関数を呼び出すのがもっと簡単です.