Python interview_python

https://github.com/taizilongxu/interview_python

?

1 Python的函數參數傳遞

  strings, tuples, 和numbers是不可更改的對象,而list,dict等則是可以修改的對象

?

2 Python中的元類(metaclass)

3 @staticmethod和@classmethod

python 三個方法,靜態方法(staticmethod),類方法(classmethod),實例方法

4 類變量和實例變量

類變量就是供類使用的變量,實例變量就是供實例使用的.

若是list,dict修改實例變量,類變量也改變。strings, tuples, 和numbers是不可更改的對象,故實例變量和類變量不同。

5 Python自省

自省就是面向對象的語言所寫的程序在運行時,所能知道對象的類型.簡單一句就是運行時能夠獲得對象的類型.比如type(),dir(),getattr(),hasattr(),isinstance().

?

6 字典推導式

列表推導式(list comprehension)

In [39]: [x*x for x in range(10)]
Out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

2.7加入字典推導式

>>> strings = ['import','is','with','if','file','exception']??
??
>>> D = {key: val for val,key in enumerate(strings)}??
??
>>> D??
{'exception': 5, 'is': 1, 'file': 4, 'import': 0, 'with': 2, 'if': 3}??

7 單下劃線、雙下劃線

http://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name

single underscore :?private

>>> class MyClass():
...     def __init__(self):
...             self.__superprivate = "Hello"
...             self._semiprivate = ", world!"
...
>>> mc = MyClass()
>>> print mc.__superprivate
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: myClass instance has no attribute '__superprivate'
>>> print mc._semiprivate
, world!
>>> print mc.__dict__
{'_MyClass__superprivate': 'Hello', '_semiprivate': ', world!'}

8 字符串格式化:%和.format

sub1 = "python string!"
sub2 = "an arg"a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)print a    # "i am a python string!"
print b    # "i am a python string!"
print c    # "with an arg!"
print d    # "with an arg!""hi there %s" % (name,)   # supply the single argument as a single-item tuple

9 迭代器和生成器

10?*args?and?**kwargs

*args,例如,它可以傳遞任意數量的參數. ?You would use?*args?when you're not sure how many arguments might be passed to your function

**kwargs,允許你使用沒有事先定義的參數名.

*args表示任何多個無名參數,它是一個tuple;**kwargs表示關鍵字參數,它是一個dict。

https://stackoverflow.com/questions/3394835/args-and-kwargs/3394898#3394898

def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'if __name__ == '__main__':foo(1,2,3,4)foo(a=1,b=2,c=3)foo(1,2,3,4, a=1,b=2,c=3)foo('a', 1, None, a=1, b='2', c=3)
輸出結果如下:

args =? (1, 2, 3, 4)?
kwargs =? {}?
---------------------------------------?
args =? ()?
kwargs =? {'a': 1, 'c': 3, 'b': 2}?
---------------------------------------?
args =? (1, 2, 3, 4)?
kwargs =? {'a': 1, 'c': 3, 'b': 2}?
---------------------------------------?
args =? ('a', 1, None)?
kwargs =? {'a': 1, 'c': 3, 'b': '2'}?
---------------------------------------

?

# 當調用函數時你也可以用 * 和 ** 語法
def star_operation(name, value, count):print("Name: {}, Value: {}, Count: {}".format(name, value, count))if __name__ == "__main__":# 它可以傳遞列表(或者元組)的每一項并把它們解包. 注意必須與它們在函數里的參數相吻合a_list = ["名字", "", "計數器"]a_dict = {'a':1, 'b':2, 'b':3}star_operation(*a_list)star_operation(**a_dict.items())

輸出:

Name: 名字, Value: 值, Count: 計數器
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-33-d38ee010e1b9> in <module>()
 10 a_dict = {'a':1, 'b':2, 'b':3}  11 star_operation(*a_list) ---> 12 star_operation(**a_dict.items()) TypeError: star_operation() argument after ** must be a mapping, not list

**后面必須是 mapping,映射

?

11 面向切面編程AOP和裝飾器

裝飾器的作用就是為已經存在的對象添加額外的功能

# how decorators workdef makebold(fn):def wrapped():return "<b>" + fn() + "</b>"return wrapped
def makeitalic(fn):def wrapped():return "<i>" + fn() + "</i>"return wrapped@makebold
@makeitalic
def hello():return "hello world"print hello() ## returns  "<b><i>hello world</i></b>"

函數即是對象

def shout(word="yes")return word.capitalize()+"!"print (shout())  # Yes!# As an object, you can assign the function to a variable like any other object
scream = shout# Notice we don't use parenthese: we are not calling the fuction, 
# we are putting the function "shout" into the variable "scream". 
# It means you can then call "shout" from "scream":
print (scream()) #  Yes!# More than that, it means you can remove the old name 'shout', 
# and the function will still be accessible from 'scream'del shout
try:print(shout())
except NameError, e:print(e) #  "name 'shout' is not defined"print(scream()) # Yes!

python: function can be defined inside another function / 函數能夠定義在其他函數內。

Functions references:

  1.can be assigned to a varible

  2.can be defined in another function

def getTalk(kind="shout"):# We define functions on the flydef shout(word="yes"):return word.capitalize()+"!"def whisper(word="yes") :return word.lower()+"...";# Then we return one of themif kind == "shout":# We don't use "()", we are not calling the function, we are returning the function objectreturn shout  else:return whisper# How do you use this strange beast?# Get the function and assign it to a variable
talk = getTalk()      # You can see that "talk" is here a function object:
print(talk)
#outputs : <function shout at 0xb7ea817c># The object is the one returned by the function:
print(talk())
#outputs : Yes!# And you can even use it directly if you feel wild:
print(getTalk("whisper")())
#outputs : yes...

Decorator :

'wrappers', let you execute code before and after the function they decorate without modifying the function itself.

?

methods and functions are really the same. The only difference is that methods expect that their first argument is a reference to the current object (self).

方法和函數的唯一區別是,方法的第一個參數是對當前對象的引用,self.  

?

Python自帶的幾個裝飾器:property,staticmethod。。

Django 使用裝飾器來管理緩存和權限控制。

Twisted 用來實現異步調用。

?

12 鴨子類型

鴨子類型是動態類型的一種風格,在這種風格中,一個對象有效的語義,不是由繼承自特定的類或實現特定的接口,而是由當前 方法和屬性的集合所決定。

例如,在不使用鴨子類型的語言中,我們可以編寫一個函數,它接受一個類型為鴨的對象,并調用它的走和叫方法。在使用鴨子類型的語言中,這樣的一個函數可以接受一個任意類型的對象,并調用它的走和叫方法。如果這些需要被調用的方法不存在,那么將引發一個運行時錯誤。任何擁有這樣的正確的走和叫方法的對象都可被函數接受的這種行為引出了以上表述,這種決定類型的方式因此得名。

?

?

網絡

5 Post和Get

區別:

一個用于獲取數據,一個用于修改數據。

?

轉載于:https://www.cnblogs.com/IDRI/p/6231535.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259841.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259841.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259841.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

突然不能 ip訪問服務器文件夾,用友U8 工作站連接不到服務器,ping IP及服務器名都正常,訪問服務器共享文件夾也正常...

用友U8 U8存貨采購入庫單存貨現存量與存貨核算中的明細帳數量不符用友U8 U8存貨采購入庫單存貨現存量與存貨核算中的明細帳數量不符問題原因:錯誤原因見下面解決方案中的分析。解決方法:在查詢存貨明細帳和現存量09倉庫存貨510241數量為123&#xff0c;但在添采購入庫單紅字時卻…

rocketmq 消息 自定義_RocketMQ消息軌跡-設計篇

RocketMQ 消息軌跡主要包含兩篇文章&#xff1a;設計篇與源碼分析篇&#xff0c;本節將詳細介紹RocketMQ消息軌跡-設計相關。RocketMQ消息軌跡&#xff0c;主要跟蹤消息發送、消息消費的軌跡&#xff0c;即詳細記錄消息各個處理環節的日志&#xff0c;從設計上至少需要解決如下…

再次獻給那些心軟的人!!!

上次那篇日志朋友看了評論說&#xff1a;別太悲觀……為那些壞人成為壞人才是最不值得的&#xff01;而且好人說要當壞人就只是說說而已&#xff0c;真碰到啥事&#xff0c;依舊會傻傻的幫……沒錯&#xff0c;我還是傻傻的幫了&#xff0c;最初會表現出一點不樂意&#xff0c;…

手機做服務器性能咋樣,服務器性能不足 怎樣才能逼出最強狀態

而且&#xff0c;服務器的節能不僅僅意味著節省了電費&#xff0c;其后續的散熱降溫等工作都可以得到更好的節約。同時&#xff0c;服務器的在長時間工作的情況下&#xff0c;保持較低溫度有利于降低其承載負荷&#xff0c;最大限度發揮其能力&#xff0c;保障服務器工作運行的…

ASP.NET跨頁面傳值技巧總結

1. 使用QueryString變量 QueryString是一種非常簡單的傳值方式&#xff0c;他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時&#xff0c;可以使用這個方法。但是對于傳遞數組或對象的話&#xff0c;就不能用這個方法了。下面…

RTMP協議中文翻譯(首發)(轉)

Adobe公司的實時消息傳輸協議 摘要 此備忘錄描述了 Adobe公司的實時消息傳輸協議(RTMP)&#xff0c;此協議從屬于應用層&#xff0c;被設計用來在適合的傳輸協議&#xff08;如TCP&#xff09;上復用和打包多媒體傳輸流&#xff08;如音頻、視頻和互動內容&#xff09;。 目錄 …

關卡 動畫 藍圖 運行_UE4入門之路(基礎藍圖篇):藍圖的制作

藍圖系統簡介藍圖系統是UE4中十分有代表性的一個特點&#xff0c;所謂藍圖就是一種可視化的腳本。該系統非常靈活且非常強大&#xff0c;因為它為設計人員提供了一般僅供程序員使用的所有概念及工具。 程序員能夠很方便的創建一個基礎系統&#xff0c;并交給策劃進一步在藍圖中…

overfitting(過度擬合)的概念

來自&#xff1a;http://blog.csdn.net/fengzhe0411/article/details/7165549 最近幾天在看模式識別方面的資料&#xff0c;多次遇到“overfitting”這個概念&#xff0c;最終覺得以下解釋比較容易接受&#xff0c;就拿出來分享下。 overfittingt是這樣一種現象&#xff1a;一個…

虛擬串口服務器zenetmanager,Avocent服務器/串口管理 KVM

MergePoint Unity交換機在單個設備中結合了 KVM over IP和串行控制臺管理技術。這項獨特的結合為IT管理員提供了用于訪問和控制服務器、網絡設備及其他數據中心和分支辦公室設備的完整遠程管理解決方案。MergePoint Unity交換機直接與物理KVM、USB和串行端口進行安全的遠程帶外…

KAFKA分布式消息系統

Kafka[1]是linkedin用于日志處理的分布式消息隊列&#xff0c;linkedin的日志數據容量大&#xff0c;但對可靠性要求不高&#xff0c;其日志數據主要包括用戶行為&#xff08;登錄、瀏覽、點擊、分享、喜歡&#xff09;以及系統運行日志&#xff08;CPU、內存、磁盤、網絡、系統…

jar打包 剔除第三方依賴以及它的依賴_面試官:為什么Spring Boot的jar可以直接運行?...

來源&#xff1a;Gormats Notesfangjian0423.github.io/2017/05/31/springboot-executable-jar/Spring Boot Loader抽象的一些類JarLauncher的執行過程關于自定義的類加載器LaunchedURLClassLoaderSpring Boot Loader的作用SpringBoot提供了一個插件spring-boot-maven-plugin用…

CQRS架構圖

2019獨角獸企業重金招聘Python工程師標準>>> 轉載于:https://my.oschina.net/darkness/blog/814243

SQLite中不支持的sql語法

今天很自然的在寫Sql語句的時候用了Top&#xff0c;一開始沒發現問題&#xff0c;因為我從數據庫讀出的值正好是0&#xff0c;而我習慣變量定義的時候也都賦值0&#xff0c;可是到我不要0的時候我就發現問題了。后來才知道&#xff0c;可愛的小sqlite竟然有不支持的sql語法。 看…

Analyzer普通用戶登錄不了[從網絡訪問此計算機]

問題&#xff1a; 最近客戶諾奇反映說Analyzer普通用戶登錄不了&#xff0c;但是發現管理員又可以登錄&#xff0c;幾經周折發現原來是系統的本地安全策略設置了不讓遠程使用本地賬戶密碼登錄系統導致。解決方案&#xff1a; 修改本地安全策略的“從遠程訪問此計算機”中的用戶…

金蝶系統服務器要求,金蝶服務器安裝及其相關要求.doc

K/3WISE創新管理平臺 V12.2標準部署環境說明目錄1. 多語言部署規則21.1 客戶端多語言部署規則21.2 中間層多語言部署規則31.3 數據庫多語言部署規則31.4 人力資源、管理門戶、CRM多語言部署規則41.5 Citrix遠程接入多語言部署規則42. 多語言部署架構圖52.1 簡體中間層52.2 繁體…

源碼 移植_FreeModbus移植總結

modbus是一項工業上經常用到的通訊協議&#xff0c;而freemodbus是一款開源的從機協議棧。關于它的移植網上已經有了很多的文章&#xff0c;但是大多都只是針對其中部分問題的表述。本文將會把自己在移植freemodbus過程中遇到的問題以及freemodbus的源碼分析盡量表述清楚。&…

expect腳本的簡單應用

expect是一個用來處理交互的命令。借助于expect我們可以把交互過程寫在一個腳本上&#xff0c;使之自動化完成。expect最核心的四個命令&#xff1a;send:用于向進程發送字符串 except:從進程接收字符串 spawn:打開一個新的進程 interact&#xff1a;保持交互的狀態首先一個簡單…

ajax中datatype是json,dataType:'json'vs data:$ .ajax中的JSON.stringify(obj)

我有這個數據結構&#xff1a;var formValues {TemporaryToken: a.userStatus.get("TemporaryToken"),MemorableWordPositionAndValues:[{Position: a.userStatus.get("MemorableWordPositions")[0],Value: this.$([name"login-memorable-character-…

sqlserver 查詢中使用Union或Union All

在 程序人生網站上 看到了 這篇文章 就收藏了 哈 http://www.ourcodelife.com/article-415-1.html 首先&#xff0c;在程序人生網站上&#xff0c;需要負責任的指出的是在SQL Server查詢中使用Union或Union All后Order by排序無效&#xff0c;我不確認是不是微軟的bug&#xf…

word標題大綱級別_快速按標題層級把Word轉Excel—附詳細操作步驟

如何快速把層級分明的word文檔轉換成橫向從屬結構的excel表格一、問題描述文檔如下圖所示。文檔一共三個層次&#xff0c;大綱級別分別是1、2、3級&#xff0c;左則是其文檔結構圖&#xff0c;可以看出文檔層級分明。最終要將文檔轉換成如下橫向從屬結構的表格。一個層次的內容…