国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Python初體驗之基礎語法(三)

2019-11-14 17:05:11
字體:
來源:轉載
供稿:網友

所有測試語句基于Python 2.7.1

自學Python,如果哪里說的不恰當,還請指正。謝謝。

示例絕大部分來自博客園vamei的python教程

 部分內容來自廖雪峰的Python博客

1.函數參數  關鍵字傳遞

#! /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)

 

2.函數參數默認值

# 賦予參數默認值  如果調用函數時沒有傳遞對應位置上的值,將使用默認值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)

 定義默認參數要牢記一點:默認參數必須指向不變對象!

否則重復調用函數時,并使用默認參數時,默認參數的值會發生改變。

 

3.函數參數 包裹傳遞 可變參數

# 函數參數包裹傳遞 不確定調用時會傳遞幾個參數# 包裹位置傳遞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)

 

4.解包裹

# 解包裹 *和** 也可以在調用的時候使用 ,即解包裹 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值

 

5.循環設計

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。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林浩特市| 凤庆县| 湘潭市| 澎湖县| 杂多县| 禄劝| 遂川县| 佛山市| 闵行区| 扬州市| 楚雄市| 绩溪县| 萨嘎县| 工布江达县| 兴安县| 阿合奇县| 姚安县| 星座| 聂拉木县| 富民县| 洛扎县| 高州市| 南昌市| 通道| 嘉兴市| 大理市| 铁力市| 石景山区| 南平市| 永宁县| 柯坪县| 丁青县| 喀什市| 乡城县| 大新县| 沂南县| 方山县| 宿州市| 花莲县| 贵南县| 米林县|