python 中的 符號

2021-08-25 03:49:43 字數 1914 閱讀 1863

周海漢 /文

2010.4.11

@dec1

@dec2

def test(arg):

pass

其效果類似於

dec1(dec2(test(arg)))

修飾函式還可以帶引數。

@dec1(arg1,arg2)

def test(testarg)

效果類似於

dec1(arg1,arg2)(test(arg))

示例1 引數型別和返回值型別檢查

對於python這樣的動態語言,不像c++這樣的一開始就有嚴格靜態的型別定義。但是,在某些情況下,就需要這樣的型別檢查,那麼可以採用@修飾的方式。下面的示例就是檢查輸入引數型別和返回值型別的例子。

#!/usr/bin/env python

#coding:utf8

defaccepts

(* types) :

defcheck_accepts

( f) :

assert

len( types)

== f. func_code. co_argcount

defnew_f

(* args,

** kwds) :

for( a, t)

inzip

( args, types) :

assert

isinstance

( a, t),

\"arg %r does not match %s "% ( a, t)

return f(* args,

** kwds)

new_f. func_name = f. func_name

return new_f

return check_accepts

defreturns

( rtype) :

defcheck_returns

( f) :

defnew_f

(* args,

** kwds) :

result = f(* args,

** kwds)

assert

isinstance

( result, rtype),

\"return value %r does not match %s "% ( result, rtype)

return result

new_f. func_name = f. func_name

return new_f

return check_returns

@accepts

(int,(

int,

float))@

returns

((int

,float

))def

func

( arg1, arg2) :

return arg1 * arg2

if __name__ == '__main__ ':

a = func(

3, 'asdf ')

zhouhh@zhouhh-home:~$ ./checktype.py

traceback (most recent call last):

file "./checktype.py", line 27, in

@returns((int,float))

file "./checktype.py", line 5, in check_accepts

assert len(types) == f.func_code.co_argcount

assertionerror

其實,xml-rpc中,對於函式引數,返回值等都需要採用xml的方式傳遞到遠端再呼叫,那麼如何檢查型別呢?就可以用到如上的@修飾符。

python中的各種符號

在這裡所作的是將所有的 python 符號和關鍵字列出來,這些都是值得掌握的重點。關鍵字 and del from not while as elif global or with assert else if pass yield break except import print class e...

Python中符號的用法

1.如果字串內部既包含 又包含 怎麼辦?可以用轉義字元 來標識,比如 i m ok 表示的字串內容是 i m ok 轉義字元 可以轉義很多字元,比如 n表示換行,t表示製表符,字元 本身也要轉義,所以 表示的字元就是 可以在python的互動式命令列用print 列印字串看看 print i m o...

python中 符號詳解

a 星期幾的簡寫 a 星期幾的全稱 b 月分的簡寫 b 月份的全稱 c 標準的日期的時間串 c 年份的後兩位數字 d 十進位制表示的每月的第幾天 d 月 天 年 e 在兩字元域中,十進位制表示的每月的第幾天 f 年 月 日 g 年份的後兩位數字,使用基於周的年 g 年分,使用基於周的年 h 簡寫的月...