1. 程式人生 > >Python的語言特性

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+list2print 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還各有機