国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python這些問題你會嗎?

freecode / 2447人閱讀

摘要:因此,對于里包含的對象如果都是可以比較的,也就是說實(shí)現(xiàn)了函數(shù),那么對調(diào)用函數(shù)是沒問題的。

Python這些問題你會嗎? final作用域的代碼一定會被執(zhí)行嗎?

正常的情況下,finally作用域的代碼一定會被執(zhí)行的,不管是否發(fā)生異常。哪怕是調(diào)用了sys.exit函數(shù),finally也是會被執(zhí)行的,那怎么樣才能讓finally代碼不執(zhí)行了。

import time
choice = True
try:
    if choice:
        while True:
            pass
    else:
        print "Please pull the plug on your computer sometime soon..."
        time.sleep(60 * 60 * 24 * 365)
finally:
    print "Finally ..."

上面的代碼主要是通過讓流程停滯在try作用域里,從而實(shí)現(xiàn)了需求。上面的代碼不排除有點(diǎn)投機(jī)取巧的意思,但是我們實(shí)習(xí)了題目的需求不是嗎。

可以對含有任意的元素的list進(jìn)行排序嗎?

正常情況下:

>>> a = [1, "2", "3", "1"]
>>> a.sort()
>>> a
[1, "1", "2", "3"]

那是不是以為著,任何list都可以調(diào)用sort函數(shù)進(jìn)行排序了?

>>> x = [1, 1j]
>>> x.sort()
Traceback (most recent call last):
  File "", line 1, in ?
    x.sort()
TypeError: cannot compare complex numbers using <, <=, >, >=

python里1j是一個(gè)特殊符號代表-1的平方根,出現(xiàn)這個(gè)問題的原因是sort函數(shù)調(diào)用的對象的__lt__函數(shù)來比較兩個(gè)對象的,而復(fù)雜的數(shù)字類型是不可比較的,也就說沒有實(shí)現(xiàn)__lt__函數(shù),所以比較不了。因此,對于list里包含的對象如果都是可以比較的,也就是說實(shí)現(xiàn)了__lt__函數(shù),那么對list調(diào)用sort函數(shù)是沒問題的。

Python可是使用++x或者x++之類的操作嗎?

++x操作是可以的,但是這個(gè)操作產(chǎn)生的結(jié)果和C語言里該操作產(chǎn)生的結(jié)果是不一樣的,Python里++x操作里的加好只是一個(gè)一元操作符,所以,++x等價(jià)于+(+x),所以++x == x。

x++操作是不合法的,雖然有些情況下,x++看著是合法的,比如:x++-y,但其實(shí)這個(gè)表達(dá)式等價(jià)于x+(+(-y)) = x-y,所以正常情況下,x++是不合法的。

Python里如何實(shí)現(xiàn)類似于C++里的cout<

實(shí)現(xiàn)的方法如下:

import sys

class ostream:
    def __init__(self, file):
        self.file = file
        
    def __lshift__(self, obj):
        self.file.write(str(obj));
        return self

cout = ostream(sys.stdout)
cerr = ostream(sys.stderr)
nl = "
"

cout << x << " " << y << nl

這地方并不是展示了一個(gè)新的python語法,這只是對python的str對象進(jìn)行了封裝。

Python里如何實(shí)現(xiàn)C++里的printf函數(shù)?

在python2中,print是一個(gè)表達(dá)式,python3里是個(gè)函數(shù)。所以在python2里,我們可以這么做:

def printf(format, *args): print format % args,

上面的代碼雖然只有一行,但是,有些地方還是需要注意的。第一個(gè)地方,就是最后使用了都好結(jié)尾,這樣的話會更像c++的printf函數(shù),如果想換行,則需要傳入換行符。第二個(gè)地方是這個(gè)代碼會在最后多打印一個(gè)空格,如果不想要這個(gè)空格,可以使用sys.stdout.write函數(shù)。第三的方面,這行代碼除了更像C++風(fēng)格的printf,還有其他好處嗎?當(dāng)然是有的,參數(shù)是比較靈活的。

Python里逗號等號(,=)是什么意思?

你可以能見過下面的代碼:

>>> x ,= range(1)
>>> x
0

實(shí)際上,沒有逗號等號(,=)這種操作符,上面的代碼等價(jià)于 (x,) = range(1)。
這只是一個(gè)賦值語句,在左邊有一個(gè)元組,意味著將元組的每個(gè)元素賦給右邊的相應(yīng)元素; 在這種情況下,x被賦值為0

下面的代碼是否意味著python里有階乘的操作符?

比如下面的代碼:

assert 0!=1
assert 3!=6
assert 4!=24
assert 5!=120

其實(shí)上面的代碼并不是階乘的結(jié)果,只是有意的構(gòu)造代碼的結(jié)果,實(shí)際上,上面的代碼等價(jià)于:

assert 0 != 1
assert 3 != 6
assert 4 != 24
assert 5 != 120

這樣一看,其實(shí)assert判斷是不等于的關(guān)系,所以都是True。

如何快速的給Python的對象增加屬性

通常我們的做法是,在對象定義的時(shí)候,定義相關(guān)的屬性,那如何自由的添加對象屬性了。

class Struct:
    "A structure that can have any fields defined."
    def __init__(self, **entries): self.__dict__.update(entries)

>>> options = Struct(answer=42, linelen=80, font="courier")
>>> options.answer
42
>>> options.answer = "plastics"
>>> vars(options)
{"answer": "plastics", "font": "courier", "linelen": 80}
如何定義一個(gè)包含默認(rèn)值的dict

在python2.7之前,必須定義一個(gè)類來處理這樣的需求,現(xiàn)在,可以使用collections.defaultdict和collections.Counte來實(shí)現(xiàn)。

from collections import Counter

words = "this is a test this is only a test".split()

>>> Counter(words)
Counter({"this": 2, "test": 2, "a": 2, "is": 2, "only": 1})
如何計(jì)算函數(shù)的執(zhí)行時(shí)間
def timer(fn, *args):
    "Time the application of fn to args. Return (result, seconds)."
    import time
    start = time.clock()
    return fn(*args), time.clock() - start

>>> timer(max, range(1e6))
(999999, 0.4921875)

當(dāng)然,python還有很多現(xiàn)成的輪子,可以更好的計(jì)算程序每個(gè)步驟的詳細(xì)信息。

如何實(shí)現(xiàn)單例模式

網(wǎng)上有很多方法,但是我知道的最簡單的方式如下:

def singleton(object):
    "Raise an exception if an object of this class has been instantiated before."
    cls = object.__class__
    if hasattr(cls, "__instantiated"):
        raise ValueError("%s is a Singleton class but is already instantiated" % cls)
    cls.__instantiated = True

class YourClass:
    "A singleton class to do something ..."
    def __init__(self, args):
        singleton(self)
        ...
轉(zhuǎn)載自我的博客:捕蛇者說

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41077.html

相關(guān)文章

  • 一道神奇的Python面試題,會嗎

    關(guān)注公眾號:「Python專欄」,后臺回復(fù)「爬蟲書籍」,即可獲得2本Python爬蟲相關(guān)的電子書showImg(https://segmentfault.com/img/remote/1460000018448215?w=860&h=860); 無意間,看到這么一道Python面試題:以下代碼將輸出什么? def testFun(): temp = [lambda x : i*x for ...

    princekin 評論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法 這題會嗎

    摘要:第題反轉(zhuǎn)字符串中的單詞給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。示例輸入輸出注意在字符串中,每個(gè)單詞由單個(gè)空格分隔,并且字符串中不會有任何額外的空格。 LeetCode 第557題 557. 反轉(zhuǎn)字符串中的單詞 III 給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。 示例 1: 輸入: Lets tak...

    Olivia 評論0 收藏0
  • NPM你真的會嗎?(一)

    摘要:是生命周期中的事件,是要執(zhí)行的命令。全局安裝將安裝包放在下或者你的安裝目錄可以直接在命令行里使用卸載模塊既然可以安裝那么也會有卸載模塊的方式,卸載完以后查看一下該模塊是否存在更新模塊更多知識我們會在你真的會嗎二中來講解大家敬請期待。 showImg(https://segmentfault.com/img/bVbtW1q?w=1540&h=748); 什么是NPM npm是什么東東?n...

    Little_XM 評論0 收藏0
  • 26自學(xué)轉(zhuǎn)行前端(寫給和1年前一樣迷茫的我的你)

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗(yàn)和總結(jié),無可厚非,但是決定了就一定要堅(jiān)定的走下去,謹(jǐn)慎是為了更好的堅(jiān)持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗(yàn)和總結(jié),無可厚非,但是決定了就一定要堅(jiān)定的走下去,謹(jǐn)慎是為了更好的堅(jiān)持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏2637
  • 26自學(xué)轉(zhuǎn)行前端(寫給和1年前一樣迷茫的我的你)

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗(yàn)和總結(jié),無可厚非,但是決定了就一定要堅(jiān)定的走下去,謹(jǐn)慎是為了更好的堅(jiān)持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗(yàn)和總結(jié),無可厚非,但是決定了就一定要堅(jiān)定的走下去,謹(jǐn)慎是為了更好的堅(jiān)持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏2577

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<