Python的語言特性
1.Python函式引數的傳遞
例1:a=1
def fun(a):
a=2
fun(a)
print a #1
例2:a=[]
def fun(a):
a.append(1)
fun(a)
print a #1
這裡記住的型別是屬於物件的,而物件分為可變和不可變的,可變的list,dict,不可變的是string,number,tuple。
一個引用傳遞給函式,函式自動複製一份引用,函式裡邊的引用和外邊的沒有關係。在第一個例子裡函式把應用指向了一個不可變的物件,函式裡面和外面的結果不一樣。第二個例子函式把引用指向了可變物件,直接在記憶體裡進行修改。
[email protected] 和 @staticmethod
Python裡分為靜態方法,例項方法和類方法。
def foo(x):
print "excuting foo(%s)"%(x)
class A(object):
def foo(self,x):
print "excuting foo(%s,%s)"%(self,x)
@classmethod
def class_foo(cls,x):
print "excuting class_foo(%s,%s)"%(cls,x)
@staticmethod
def static_foo(x):
print "excuting static_foo(%s)"%x
a=A()
例項a可以呼叫靜態方法,類方法和例項方法 類A 可以呼叫靜態方法和類方法,但是不可以呼叫例項方法
首先先要理解下self和cls,這個self和cls是對例項或者類的一個繫結,一般的函式foo(x)就可以隨意呼叫,他和任何例項或者類無關,例項方法的呼叫離不開例項,每次的呼叫都要把例項自己傳遞給函式,a.foo(self,x)等於a.foo(a,x),a.foo(x)其實也是a.foo(a,x),類方法一樣,只不過他傳遞的是類而不是例項,A.foo(x)。
3.類變數和例項變數
class Person():
name="aaa"
p1=person()
p2=person()
p1.name="bbb"
print p1.name #bbb
pring p2.name #aaa
print Person.name #aaa
p1.name,一開始呼叫了類變數,但是例項的作用域把類變數的引用改變了,變成了例項變數,所以,self.name不在指向類變量了。
可以看看下面的例子:
class Person ():
a=[]
p1=Person(0
p2=Person()
p1.name.append(1)
print p1.a #[1]
print p2.a#[1]
print Person.a#[1]
3.python 中單下劃線和雙下滑線的區別?
_foo(),是一種約定,是指變數私有化,
_foo()_是約束,用來區別其他使用者自己的命名,以防止衝突。
4._new_ 和 _init_的區別?
_new_是一個靜態方法,_init_是一個例項方法,
_new_方法會返回一個例項,_init_方法什麼也不返回,
只有在_new_返回一個例項後,才會呼叫_init_方法
5.單例模式 (import版)
class My_singleton(objec):
def func(self):
pass
mysingleton = My_singleton()
#to use
from mysingleton.py import My_singleton;
my_singleton.foo()
6.寫一個函式,輸入一個字串,返回倒序的結果
1.利用字串自帶的方法:def reverse_text(text='abcdef')
return [::-1]
2.把字串變成列表,使用列表的reverse方法
def string_reverse(text='abcdef'):
new_text=list(text)
new_text.reverse()
return "".join(new_text)
print string_reverse;
3.新建一個列表,從列表的後面往前取
def string_reverse(text='abcdef'):
list=[]
for i in range(1,len(list)+1):
list.append(text[-i])
return ''.join(list)
4.按升序合併如下兩個list, 並去除重複的元素
list1
=
[
2
,
3
,
8
,
4
,
9
,
5
,
6
]
list2
=
[
5
,
6
,
10
,
17
,
11
,
2
]
list3
=
list1
+
list2
print
set
(list3)
5.下面的程式碼會不會報錯 程式碼會返回一個[],不會報IndexErrorlist
=
[
'a'
,
'b'
,
'c'
,
'd'
,
'e'
]
print
list
[
10
:]
新的預設列表在僅僅只在函式被定義的時候被建立一次,函式裡沒有被指定的列表時其實只是操作的同意個列表,
相關推薦
python語言特性之裝飾器
首先,python裝飾器的作用是:在不改變原有函式實現的前提下,給此函式增加一些額外的功能(在原有函式呼叫之前或者呼叫之後),好像給原有函式加上了一個裝飾的殼子。 通過一個例子解釋python裝飾器: # -*- coding:utf8 -*- def w1(func)
Python語言特性-閉包
1.閉包的概述 閉包是指在一個函式中定義了一個另外一個函式,內函式裡運用了外函式的臨時變數,並且外函式的返回值是內函式的引用,這樣就構成了一個閉包。 2.閉包的特點 總結一下,建立一個閉包必須滿足以下幾點: 必須有一個內嵌函式 內嵌函式必須引用外部函式中的變數 外
Python語言特性-面向切面程式設計AOP
我們先來解釋一下AOP的概念。 AOP概念及作用 AOP 即面向切面程式設計,指擴充套件功能不修改原始碼,將功能程式碼從業務邏輯程式碼中分離出來。 主要作用就是將類似於日誌記錄,效能統計,安全控制,事務處理,異常處理等重複性的程式碼塊從業務邏輯程式碼中劃分出來,對這些行為的分離。
Python語言特性-*args和**kwargs
用args和**kwargs只是為了方便,並沒有強制你使用它們。 當你不確定你的函式裡將要傳遞多少引數時你可以用args.例如,它可以傳遞任意數量的引數: def print_everything(*args): for count, thing in enumerate
Python語言特性-迭代器和生成器
迭代器: 定義:對於list、string、tuple、dict等這些容器物件,使用for迴圈遍歷是很方便的。在後臺for語句對容器物件呼叫iter()函式。iter()是python內建函式。 iter()函式會返回一個定義了next()方法的迭代器物件,它在容器中逐個訪問容器
Python語言特性-下劃線
**python 中的識別符號可以包含數字、字母和 ,但必須以字母或者 _ 開頭, 而以 下劃線 () 開頭的命名一般具有特殊的意義。**下劃線對 python 的意義不同於其他語言,分單下劃線、雙下劃線,並且有字首有後綴。總的來說有五種形式。 單雙劃線的 5 種形式: 單一下劃線:
Python語言特性-類變數和例項變數
類變數: 是可在類的所有例項間共享的值,類變數用於跟蹤存在著多少個Test的例項 例項變數: 例項化之後,每個例項都會有單獨的變數 例1 class Test(object): num_of_instance = 0 def __init__(self, n
Python語言特性-Python自省
Python的自省是python最強大的特性之一。 自省就是面向物件的語言所寫的程式在執行時,所能知道物件的型別,簡單來說就是執行時能夠自動獲得物件的型別,比如:type(),dir(),getattr(),hasattr(),isinstance(). a =
寫給.NET開發者的Python教程(一):C# vs Python: 語言特性、Conda和Jupyter Notebook環境
承接上篇,本文會從語言特性、開發環境和必備工具來帶領大家進入Python的世界。 語言特性 首先一起看下C#和Python在語言特性層面的對比,他們作為截然不同的兩類面向物件高階語言,在語言層面上有何異同。 注:本系列均
Java、C、C++、C#、php、python語言的內在特性及應用
當你選擇了網際網路這個行業也就意味著你要終身學習,想必現在的你一定驚歎網際網路的發展速度吧! 網際網路行業不比傳統行業,不是說你精通一門手藝就可以一輩子靠這個手藝來養活自己,網際網路行業沒有這回事,如果你想問有沒有哪一門語言學完之後可以養活自己一輩子,那麼抱歉,我想沒人能回答你。 網際網路發
13個非常實用的語言特性,助力更好的Python學習!
12c 圖片 列表 語言特性 免費 分開 使用 刪除 iterators 如果你是一個在學Python,或者打算學習Python老鐵,看完這些語言特性,你會覺得很有受益且實用! 1、分拆 當你要傳遞的參數已經是一個列表,調用的函數卻接受分開一個個的參數,這個時候可以
python小白入門教程——TypeScript的語言特性
TypeScript是一種給JavaScript新增特性的語言擴充套件,增加的功能主要有:型別註解和編譯時型別檢查、介面、列舉,同時從ES6中反向移植過來了:類、模組、箭頭函式等功能。 型別註解在TypeScript中是記錄函式或變數約束的簡便方法,基於程式碼結構和型
Python的語言特性
1.Python函式引數的傳遞例1:a=1def fun(a): a=2fun(a)print a #1例2:a=[]def fun(a): a.append(1)fun(a)print a #1這裡記住的型別是屬於物件的,而物件分為可變和不可變的,可變的list
這不是bug,而是語言特性
ima you clas 技術 技術分享 initial logs 做了 class 分析編程語言缺陷的一種方法是把所有的缺陷歸於3類:不該做的做了,該做的沒做,該做但做得不合適。 在使用switch case時,如果使用缺省的 fall through,請一定在旁邊註釋,
求斐波那契數的python語言實現---遞歸和叠代
put bsp print span return spa number n-2 遞歸實現 叠代實現如下: def fab(n): n1 = 1 n2 = 1 if n<1: print
批量安裝/卸載手機apk--python語言
listdir edi -- pri def shel time style pen import osimport timefiledir = "D:\\app"def install(): files = os.listdir(filedir) for fi
用Python語言設計GUI界面
list head for qt4 雙擊 data- com http 彈出 我們大家都編寫過程序,但是如果能夠設計一個GUI界面,會使程序增添一個很大的亮點!今天就讓我們來用目前十分流行的python語言寫出一個最基本的GUI,為日後設計更加漂亮的GUI打下基礎。
selenium自動化實戰-基於python語言(二: 編寫腳本)
獲取 pat 打開 border 命令 需要 框架 attribute 一個 上一篇文章說到顯示等待和隱式等待語句,我們繼續學習下面的命令方法。 8. 定位一組元素 這裏書上是自己寫了一個頁面代碼,通過訪問本地這個頁面來舉例。但我覺得找一個現有的頁面自己琢磨更有意思,而且
python語言學習筆記整理
hello 如果 顏色 價格 姓名 識別 可變 等於 cat 什麽是程序? 程序等於數據結構加算法,那麽數據結構是一個靜態的東西,算法是一個動態的東西,我們用一個新的語言編寫這個程序,我們要考慮到語言也主要由數據結構和算法相關的東西,或靜態或動態的東西來構成,所以我們可以把
Python語言在人工智能(AI)中的優勢 (轉)
巴西 luci ant p s 天使 不惜 ray 這也 招聘網站 本文探討了Python語言在AI領域的優勢與運用。 誰會成為AI 和大數據時代的第一開發語言? 這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 python還各有機