所有測試語句基于Python 2.7.1
自學Python,如果哪里說的不恰當,還請指正。謝謝。
示例絕大部分來自博客園vamei的python教程
部分內容來自廖雪峰的Python博客
#! /usr/bin/env python# coding=UTF-8# 函數參數關鍵字傳遞 根據每個參數的名字傳遞參數-->無需遵照位置對應關系# 可以與位置傳遞混用,但是直接的值傳遞的參數要出現在關鍵字參數之前def sum(a, b, c): return a + b + cPRint "sum(1,b=2,c=3) = ", sum(1, b=2, c=3)print "sum(c=3,b=4,a=5) = ", sum(c=3, b=4, a=5)

# 賦予參數默認值 如果調用函數時沒有傳遞對應位置上的值,將使用默認值def squre_sum(a, b, c=1): return a ** a + b ** b + c ** cprint "squre_sum(2,3)=", squre_sum(2, 3)print "squre_sum(2,3,4)=", squre_sum(2, 3, 4)

定義默認參數要牢記一點:默認參數必須指向不變對象!
否則重復調用函數時,并使用默認參數時,默認參數的值會發生改變。
# 函數參數包裹傳遞 不確定調用時會傳遞幾個參數# 包裹位置傳遞def func(*name): print type(name) print nameprint func(1, 2, 3)print func(1, 2, 3, 4, 5)

這里為什么每次都輸出有None,還請知道的園友告知一下,謝謝。
感謝園友 月缺一格 的指正,這里函數沒有返回值,故默認返回None.
# 包裹關鍵字傳遞 dic是一個字典 收集所有的關鍵字傳遞給函數func_tdef func_t(**dic): print type(dic) print dicprint func_t(a=1, b=2)print func_t(a=3, b=4, c=5)

# 解包裹 *和** 也可以在調用的時候使用 ,即解包裹 unpackingdef func_m(a, b, c): print a, b, cargs = (1, 2, 3)# 在傳遞tuple時,讓tuple的每一個元素對應一個位置參數,*提示Python去拆分func_m(*args)# 詞典解包裹dic = {'a': 11, 'b': 22, 'c': 33}func_m(**dic) # 得到value值func_m(*dic) # 得到key值

string = 'xiaomi vs meizu'for index in range(0, len(string), 1): print string[index],

分別定義上限start,下限stop和每次循環的步長step

在python 2.x中,要使 print 不換行 在print語句最后加逗號(英文半角符號形式)
>>> print x,
在python 3.x中,要使 print 不換行,寫成如下格式
>>> print(x, end="")
因為print函數的原型是
print(*objects, sep=' ', end='/n', file=sys.stdout, flush=False)
默認是以 /n 結尾,即換行。把 /n 替換為空字符串就行。
string = 'xiaomi vs meizu'print '/n', '字符串長度:', len(string)for (index, char) in enumerate(string): print index, print char,

利用enumerate()函數,可以在每次循環中同時得到下標和元素,enumerate()在每次循環中,
返回的是一個包含兩個元素的定值表(tuple),兩個元素分別賦予index和char。
a = [1, 2, 3]b = [4, 5, 6]c = [7, 8, 9]for (x, y, z) in zip(a, b, c): print (x, y, z)

如果你多個等長的序列,然后想要每次循環時從各個序列分別取出一個元素,可以利用zip()函數
zip()函數的功能,就是從多個列表中,依次各取出一個元素。每次取出的(來自不同列表的)元素合成一個元組,
合并成的元組放入zip()返回的列表中。zip()函數起到了聚合列表的功能。
a = [1, 2, 3]b = [4, 5, 6]# cluster 聚合zipped = zip(a, b)print '聚合列表:', zipped# decompose 分解ma, mb = zip(*zipped)print '分解列表:', ma, mb

小結:
Python的函數具有非常靈活的參數形態,既可以實現簡單的調用,又可以傳入非常復雜的參數。
默認參數一定要用不可變對象,如果是可變對象,運行會有邏輯錯誤!
要注意定義可變參數和關鍵字參數的語法:
*args是可變參數,args接收的是一個tuple;
**kw是關鍵字參數,kw接收的是一個dict。
以及調用函數時如何傳入可變參數和關鍵字參數的語法:
可變參數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過*args傳入:func(*(1, 2, 3));
關鍵字參數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過**kw傳入:func(**{'a': 1, 'b': 2})。
使用*args和**kw是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。
PS:
首次安裝PyCharm IDE會發現,在調試的輸出窗口中文顯示為亂碼;
這是因為工程默認的編碼是GBk,而IDE的默認編碼是UTF-8,
打開File --> settings--> Editor -->File Encodings 選項卡
將他們的編碼統一一下,設置為支持中文的編碼即可,如UTF-8。

新聞熱點
疑難解答