- 論壇徽章:
- 0
|
第7章 函數(shù)
1、函數(shù)定義:通過def關(guān)鍵字定義,后跟 一個(gè)函數(shù)的標(biāo)識(shí)符名稱,然后一對圓括號(hào),后再跟冒號(hào)。
2、函數(shù)形參
參數(shù)在函數(shù)定義的圓括號(hào)對內(nèi)指定,用逗號(hào)分割。
術(shù)語——函數(shù)中的參數(shù)名稱為 形參 而你提供給函數(shù)調(diào)用的值稱為 實(shí)參 。
3、局部變量
def func():
global x
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func()
print 'Value of x is', x
global語句:被用來聲明x是全局的——因此,當(dāng)我們在函數(shù)內(nèi)把值賦給x的時(shí)候,這個(gè)變化也反映在我們在主塊中使用x的值的時(shí)候。
4、默認(rèn)參數(shù)值
在函數(shù)定義的形參名后加上賦值運(yùn)算符(=)和默認(rèn)值,從而給形參指定默認(rèn)參數(shù)值。
def say(message,times = 1):
print message * times
注:say的函數(shù)用來打印一個(gè)字符串任意所需的次數(shù)重要:只有在形參表末尾的那些參數(shù)可以有默認(rèn)參數(shù)值
5、關(guān)鍵參數(shù)
使用名字(關(guān)鍵字)而不是位置來給函數(shù)指定實(shí)參。
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)
6、return語句
沒有返回值的return語句等價(jià)于return None。None是Python中表示沒有任何東西的特殊類型。
def someFunction():
pass
pass語句在Python中表示一個(gè)空的語句塊。
7、DocStrings:文檔字符串
def printMax(x, y):
'''Prints the maximum of two numbers.
The two values must be integers.'''
x = int(x) # convert to integers, if possible
y = int(y)
if x > y:
print x, 'is maximum'
else:
print y, 'is maximum'
printMax(3, 5)
print printMax.__doc__
help(printMax)
輸出為:
E:\02_study\21-python\prac_code>python func_doc.py
5 is maximum
Prints the maximum of two numbers.
The two values must be integers.
Help on function printMax in module __main__:
printMax(x, y)
Prints the maximum of two numbers.
The two values must be integers.
注:
在函數(shù)的第一個(gè)邏輯行的字符串是這個(gè)函數(shù)的 文檔字符串
使用__doc__(注意雙下劃線)調(diào)用printMax函數(shù)的文檔字符串屬性(屬于函數(shù)的名稱)。
10:43 2008-9-25
第8章 模塊
模塊基本上就是一個(gè)包含了所有你定義的函數(shù)和變量的文件。
為了在其他程序中重用模塊,模塊的文件名必須以.py為擴(kuò)展名。
1、使用標(biāo)準(zhǔn)庫模塊。
import sys
print 'The command line arguments are:'
for i in sys.argv:
print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'
運(yùn)行后輸出:
E:\02_study\21-python\prac_code>python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments
The PYTHONPATH IS ['E:\\02_study\\21-python\\prac_code',
'C:\\WINDOWS\\system32
[url=file://\\python23.zip']\\python23.zip'[/url]
, 'E:\\02_study\\21-python\\prac_code', 'D:\\Python23
[url=file://\\DLLs']\\DLLs'[/url]
, 'D:
[url=file://\\Python23\\lib']\\Python23\\lib'[/url]
, 'D:\\Python23\\lib\\plat-win', 'D:\\Python23
[url=file://\\lib\\lib-tk']\\lib\\lib-tk'[/url]
, 'D
:\\Python23', 'D:\\Python23\\lib\\site-packages']
注:
(1)、利用import語句 輸入 sys模塊。
(2)sys模塊包含了與Python解釋器和它的環(huán)境有關(guān)的函數(shù)。
(3)、sys.argv包含了 命令行參數(shù) 的列表,即使用命令行傳遞給你的程序的參數(shù)。
腳本的名稱總是sys.argv列表的第一個(gè)參數(shù),即'using_sys.py'是sys.argv[0],'we'是sys.argv[1]。。。
(4)、sys.path包含輸入模塊的目錄名列表。
2、字節(jié)編譯的.pyc文件
字節(jié)編譯的文件與Python變換程序的中間狀態(tài)有關(guān),是與平臺(tái)無關(guān)的,使輸入模塊更加快一些的
3、from..import語句
如果你想要直接輸入argv變量到你的程序中(避免在每次使用它時(shí)打sys.),那么你可以使用from sys import argv語句。
如果你想要輸入所有sys模塊使用的名字,那么你可以使用from sys import *語句。
應(yīng)盡量避免
4、模塊的__name__
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
注:每個(gè)Python模塊都有它的__name__
假如我們只想在程序本身被使用的時(shí)候運(yùn)行主塊,而在它被別的模塊輸入的時(shí)候不運(yùn)行主塊,可用上面的代碼來分開。
5、創(chuàng)建自己的模塊
import mymodule
mymodule.sayhi()
print 'Version', mymodule.version
注:個(gè)人感覺像類,還是不用實(shí)例化的靜態(tài)類。
用from...import的例子
from mymodule import sayhi,version
sayhi()
print 'vresion',version
6、dir函數(shù)
(1)、可以使用內(nèi)建的dir函數(shù)來列出模塊定義的標(biāo)識(shí)符。標(biāo)識(shí)符有函數(shù)、類和變量。
>>> import mymodule
>>> dir(mymodule)
['__builtins__', '__doc__', '__file__', '__name__', 'sayhi',
'version']
>>>
(2)、如果不傳參數(shù),返回當(dāng)前模塊的屬性列表,輸入的模塊同樣是列表的一部分。
>>> dir()
['__builtins__', '__doc__', '__name__', 'mymodule', 'sys']
>>>
(3)、往列表中增、減
>>> a = 5
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'mymodule', 'sys']
>>> del a
>>> dir()
['__builtins__', '__doc__', '__name__', 'mymodule', 'sys']
>>>
注:于del的一點(diǎn)注釋——這個(gè)語句在運(yùn)行后被用來 刪除 一個(gè)變量/名稱。
del a,你將無法再使用變量a——它就好像從來沒有存在過一樣。
12:38 2008-9-25
第9章 數(shù)據(jù)結(jié)構(gòu)
在Python中有三種內(nèi)建的數(shù)據(jù)結(jié)構(gòu)——列表、元組和字典。
17:18 2008-9-25
1、列表
列表是 可變的 數(shù)據(jù)類型
是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu)。
(1)、初始化
shoplist = ['apple','mango','carrot','banana']
注:在列表中添加 任何種類的對象 包括數(shù)甚至其他列表。
(2)、逐個(gè)顯示
print 'these items are:',
for item in shoplist:
print item,
注:在print語句的結(jié)尾使用了一個(gè) 逗號(hào) 來消除每個(gè)print語句自動(dòng)打印的換行符。
(3)、使用append方法在列表中添加了一個(gè)項(xiàng)目,并打印列表的內(nèi)容
shoplist.append('rice')
print 'my shopping list is now',shoplist
(4)、使用列表的sort方法來對列表排序,這個(gè)方法影響列表本身,而不是返回一個(gè)修改后的列表
shoplist.sort()
(5)、使用del語句來刪除
print 'The first item I will buy is',shoplist[0]
olditem = shoplist[0]
del shoplist[0]
(6)、可以通過help(list)獲得完整的知識(shí)。
2、元組
元組和列表十分類似,只不過元組和字符串一樣是 不可變的 即你不能修改元組。
(1)、元組通過圓括號(hào)中用逗號(hào)分割的項(xiàng)目。
zoo = ('wolf', 'elephant', 'penguin')
(2)、訪問
通過一對方括號(hào)來指明位置,這被稱作 索引 運(yùn)算符。我們使用new_zoo[2]來訪問new_zoo中的第三個(gè)項(xiàng)目。我們使用new_zoo[2][2]來訪問new_zoo元組的第三個(gè)項(xiàng)目的第三個(gè)項(xiàng)目。
(3)、含有0個(gè)或1個(gè)項(xiàng)目的元組。
一個(gè)空的元組由一對空的圓括號(hào)組成,如myempty = ()。
含有單個(gè)元素的元組:必須在第一個(gè)(唯一一個(gè))項(xiàng)目后跟一個(gè)逗號(hào),這樣Python才能區(qū)分元組和表達(dá)式中一個(gè)帶圓括號(hào)的對象。
(4)、元組與打印語句
age = 22
name = 'Swaroop'
print '%s is %d years old' % (name, age)
print 'Why is %s playing with that python?' % name
注:print語句可以使用跟著%符號(hào)的項(xiàng)目元組的字符串。定制讓輸出滿足某種特定的格式。定制可以是%s表示字符串或%d表示整數(shù)。元組必須按照相同的順序來對應(yīng)這些定制。
%符號(hào)后的單個(gè)項(xiàng)目——沒有圓括號(hào),這只在字符串中只有一個(gè)定制的時(shí)候有效。
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/28123/showart_1225421.html |
|