日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)

發(fā)布時(shí)間:2023/12/10 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、python是靜態(tài)還是動(dòng)態(tài)類(lèi)型?是強(qiáng)類(lèi)型還是弱類(lèi)型?

1、動(dòng)態(tài)強(qiáng)類(lèi)型語(yǔ)言(不少人誤以為是弱類(lèi)型)

不要傻傻分不清

2、動(dòng)態(tài)還是靜態(tài)指的是編譯期還是運(yùn)行期確定類(lèi)型

3、強(qiáng)類(lèi)型指的是不會(huì)發(fā)生隱式類(lèi)型轉(zhuǎn)換

若類(lèi)型語(yǔ)言

強(qiáng)類(lèi)型語(yǔ)言

4、python作為后端語(yǔ)言優(yōu)缺點(diǎn)

1、膠水語(yǔ)言、輪子多、應(yīng)用廣泛

2、語(yǔ)言靈活、生產(chǎn)力高

3、性能問(wèn)題、代碼維護(hù)問(wèn)題、python2/2兼容問(wèn)題

動(dòng)態(tài)語(yǔ)言一時(shí)爽、代碼重構(gòu)火葬場(chǎng)

二、什么是鴨子類(lèi)型

當(dāng)看到一只鳥(niǎo)走起來(lái)想鴨子、有用起來(lái)像鴨子、叫起來(lái)也想鴨子、那么這只鳥(niǎo)就可以被稱(chēng)為鴨子

1、關(guān)注點(diǎn)在對(duì)象的行為,而不是類(lèi)型(duck typing)

2、比如 file、StringIO,socket對(duì)象都支持read/write方法(file like object)

2、在比如定義了 _iter_魔術(shù)方法的隊(duì)形可以用for迭代

代碼驗(yàn)證

1、代碼

class Duck():

def quack(self):

print("gua gua")

class Person:

def quack(self):

print("我是人類(lèi),但我也會(huì) gua gua gua")

def in_the_forest(duck):

duck.quack()

def game():

donald = Duck()

john = Person()

in_the_forest(donald)

in_the_forest(john)

print(type(donald))

print(type(john))

print(isinstance(donald,Duck))

print(isinstance(john,Person))

game()

2、輸出結(jié)果

duck_type.py

gua gua

我是人類(lèi),但我也會(huì) gua gua gua

True

True

Process finished with exit code 0

三、什么是monkey patch?那些地方用到了?自己如何實(shí)現(xiàn)?

1、所謂的monkey patch就是運(yùn)行時(shí)替換

2、比如gevent庫(kù)需要修改內(nèi)置的socket

3、from gevent import monkey;monkey.patch_socket()

1、安裝gevent

1.在https://pypi.org/project/gevent/#files下載你需要的gevent版本,保存到一個(gè)文件夾中

2.在cmd中,cd到你Python的Script下進(jìn)行安裝

3.cd 到你下載好的gevent 路徑

4.進(jìn)入gevent路徑的系統(tǒng)盤(pán)中

5.pip install 下載好的gevent模塊名

2、gevent庫(kù)需要修改內(nèi)置的socket

import socket

import gevent

print(socket.socket)

print("After momkey patch")

from gevent import monkey

monkey.patch_socket()

print(socket.socket)

import select

print(select.select)

monkey.patch_socket()

print("After momkey patch")

print(select.select)

輸出如下:

monkey_path.py

After momkey patch

After momkey patch

3、自己實(shí)現(xiàn)monkey patch

import socket

import gevent

print(socket.socket)

print("After momkey patch")

from gevent import monkey

monkey.patch_socket("After momkey patch")

print(socket.socket)

import select

print(select.select)

monkey.patch_socket()

print("After momkey patch")

print(select.select)

import time

print(time.time())

def _time():

return 1234

time.time = _time

print(time.time())

輸出結(jié)果如下:

monkey_path.py

After momkey patch

After momkey patch

1564107393.6268823

1234

Process finished with exit code 0

四、什么是自省?

運(yùn)行時(shí)判斷一個(gè)對(duì)象的類(lèi)型的能力

python一切皆對(duì)象、用type、id、isinstance獲取對(duì)象類(lèi)型信息

ll = [1, 2, 3]

d = dict(a=1) #{a:1}

print(type(ll))

print(type(d))

print(isinstance(ll, list))

print(isinstance(d, dict))

def add(a, b):

if isinstance(a, int):

return a + b

elif isinstance(a, str):

return a.upper()+b

print(add(1, 2))

print(add(‘head‘, ‘tail‘))

輸出結(jié)果如下:

introspection.py

True

True

3

HEADtail

Process finished with exit code 0

Inspect模塊提供了更多獲取時(shí)對(duì)象信息的函數(shù)

ll = [1, 2, 3]

d = dict(a=1) #{a:1}

print(type(ll))

print(type(d))

print(isinstance(ll, list))

print(isinstance(d, dict))

def add(a, b):

if isinstance(a, int):

return a + b

elif isinstance(a, str):

return a.upper()+b

print(add(1, 2))

print(add(‘head‘, ‘tail‘))

print(id(ll))

print(id(d))

print(ll is d)

print(ll is ll)

輸出結(jié)果如下:

introspection.py

True

True

3

HEADtail

17718152

17742664

False

True

Process finished with exit code 0

五、什么是列表和字典推導(dǎo)

比如[i for i in range(10) if i % 2 == 0]

一種快速生成list/dict/set的方式,用來(lái)替代map/filter等

(i for i in range(10) if i % 2 == 0)返回生成器

a = [‘a(chǎn)‘, ‘b‘, ‘c‘]

b =[1, 2, 3]

# d = {‘a(chǎn)‘:1, ‘b‘:2, ‘c‘:3}

d = {}

for i in range(len(a)):

d[a[i]] = b[i]

print(d)

d = {k: v for k, v in zip(a,b)}

print(d)

輸出結(jié)果:

compresion.py

{‘c‘: 3, ‘b‘: 2, ‘a(chǎn)‘: 1}

{‘c‘: 3, ‘b‘: 2, ‘a(chǎn)‘: 1}

六、知道python之禪嗎?

Tim Peters 編寫(xiě)的關(guān)于Python編寫(xiě)的準(zhǔn)則

import this

編程拿不準(zhǔn)的時(shí)候可以參考

In [8]: import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren‘t special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you‘re Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it‘s a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let‘s do more of those!

原文地址:https://www.cnblogs.com/luoahong/p/11251661.html

總結(jié)

以上是生活随笔為你收集整理的python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。