Python 3ノート-廖雪峰
7730 ワード
ord('A') #65
chr(66) #'B'
# -*- coding: utf-8 -*- # , Python utf-8
'Hi, %s, you have $%d.' % ('Michael', 1000000) # %s ,%d
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'}
>>> 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():
(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
isinstance([],Iterable)
を検出することで、iter()
でIterableを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')
>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
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つの式しか書けないという制限があります.def f(x):
return x * x
functools.partialの役割は、1つの関数のいくつかのパラメータを固定(つまりデフォルト値を設定)して、新しい関数を返して、この新しい関数を呼び出すのがもっと簡単です.