摘要:有點出入,一個文件,從上往下執(zhí)行語句,函數(shù)就是開始語句。當然還能增加另外的函數(shù)和執(zhí)行語句。如果這個函數(shù)主要是為了計算平方,可以寫成調(diào)用,也能得到。計算次方,默認參數(shù)可以節(jié)省輸入,預防一些錯誤。可變參數(shù)中函數(shù)的參數(shù)個數(shù)是可變的。
原文閱讀
語句的執(zhí)行順序學C的時候,寫函數(shù)常會先去找main函數(shù),一級一級的調(diào)用看下來,再在適當?shù)囊粋€函數(shù)里,調(diào)用需要的函數(shù),傳入?yún)?shù),獲得數(shù)據(jù)。Python有點出入,一個.py文件,從上往下執(zhí)行語句,main函數(shù)就是開始語句。比如一個遞歸的函數(shù)
def fact(n): if n == 1: return 1; return n * n + fact(n - 1) print fact(4)
這個是計算1 * 1 + 2 * 2 + 3 * 3 + ... + n * n(markDown怎么寫平方 - -#),遞歸調(diào)用,假設文件名為a.py,在Terminal下運行python a.py,就輸出數(shù)據(jù)了。當然還能增加另外的函數(shù)和執(zhí)行語句。
也能給函數(shù)指定別名(可以理解為函數(shù)指針):
def fact(n): if n == 1: return 1; return n * n + fact(n - 1) z = fact print z(4)函數(shù)返回值
看一個函數(shù),輸出一個數(shù)的絕對值,如果輸入的不是數(shù)字,則報錯:
def my_abs(x): if not isinstance(x, (int, float)): raise TypeError("bad operand type") if x > 0: return x elif x == 0: pass else: return -x print my_abs(5) print my_abs(0) print my_abs(-5) print my_abs("a")
輸出:
一個函數(shù)也能返回多個值:
import math def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny a,b = move(100, 100, 60, math.pi / 6) print a, b
輸出:
定義一個函數(shù),計算x的n次方:
def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s
調(diào)用power(5,2),就能得到25。如果這個函數(shù)主要是為了計算平方,可以寫成:
def power(x, n = 2): s = 1 while n > 0: n = n - 1 s = s * x return s
調(diào)用power(5),也能得到25。計算3次方power(5, 3),默認參數(shù)可以節(jié)省輸入,預防一些錯誤。
可變參數(shù)Python中函數(shù)的參數(shù)個數(shù)是可變的。具體是怎么樣呢?比如我們要計算a * a, b * b, c * c:
一、def func(a, b ,c):,函數(shù)參數(shù)是3個整數(shù),調(diào)用時func(a, b, c)
二、def func(numbers):,參數(shù)是一個list或者tuple,調(diào)用時func([a,b,c])或func((a, b ,c))
而可變參數(shù)的函數(shù)是def func(*numbers):,調(diào)用時候func(a, b, c),可以寫成:
def func(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum關(guān)鍵字參數(shù)
可變參數(shù)是傳入?yún)?shù)到函數(shù)后,函數(shù)自動將參數(shù)組裝成一個tuple,關(guān)鍵字參數(shù)則是將參數(shù)組裝成key-value鍵值對。比如:
def person(name, age, **kw): print "name:", name, "age:", age, "other:", kw
調(diào)用函數(shù):
>>> person("Michael", 30) name: Michael age: 30 other: {}
>>> person("Adam", 45, gender="M", job="Engineer") name: Adam age: 45 other: {"gender": "M", "job": "Engineer"}
這樣,函數(shù)參數(shù)就有了list類型的參數(shù)。還可以這么調(diào)用
>>> kw = {"city": "Beijing", "job": "Engineer"} >>> person("Jack", 24, **kw) name: Jack age: 24 other: {"city": "Beijing", "job": "Engineer"}參數(shù)組合
可以將各種參數(shù)組合用,順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù)。比如:
def func(a, b, c=0, *args, **kw): print "a =", a, "b =", b, "c =", c, "args =", args, "kw =", kw
*args為可變參數(shù),接受的是tuple,**kw是關(guān)鍵字參數(shù),接受的是一個dict。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37309.html
摘要:以下這些項目,你拿來學習學習練練手。當你每個步驟都能做到很優(yōu)秀的時候,你應該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設計方案,比如說。 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...
馬上就要開始啦這次共組織15個組隊學習 涵蓋了AI領域從理論知識到動手實踐的內(nèi)容 按照下面給出的最完備學習路線分類 難度系數(shù)分為低、中、高三檔 可以按照需要參加 - 學習路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
摘要:在這里我分享下我個人入門機器學習的經(jīng)歷,希望能對大家能有所幫助。相關(guān)學習鏈接,,入門后的體驗在入門了機器學習之后,在實際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個新的算法。 機器學習在很多眼里就是香餑餑,因為機器學習相關(guān)的崗位在當前市場待遇不錯,但同時機器學習在很多人面前又是一座大山,因為發(fā)現(xiàn)它太難學了。在這里我分享下我個人入門機器學習的經(jīng)歷,希望能對大家能有所幫助。 PS:這篇文章...
閱讀 1900·2021-11-15 11:46
閱讀 1099·2021-10-26 09:49
閱讀 1833·2021-10-14 09:42
閱讀 3391·2021-09-26 09:55
閱讀 844·2019-08-30 13:58
閱讀 1042·2019-08-29 16:40
閱讀 3479·2019-08-26 10:27
閱讀 615·2019-08-23 18:18