【Python學習筆記】函數

函數:就是完成特定功能的代碼段html

 將重複的代碼段封裝成函數,能夠提升代碼利用率和實現抽象python

一、Python提供了大量的內置函數函數

關於python的內置函數使用,能夠參官網上的文檔庫https://docs.python.org/2/library/index.html,命令行

中文版文檔庫http://python.usyiyi.cn/translate/python_278/library/functions.html
固然,也能夠在交互命令行下,輸入help(),而後輸入幫助信息,退出幫助用Ctrl+Ccode

#!/usr/bin/env python
#-*- coding:utf-8 -*-


# ★常見內置函數之abs(n)==》絕對值
print abs(-20.1)
# print abs(-20,9)            # 報錯信息
# print abs('a')              # 報錯信息
# 常見內置函數之cmp(x,y)==》比較大小:x<y返回-1,x=y返回0,x>y返回1
print cmp(2,3)
print cmp(2,2)
print cmp(2,1)
print cmp(u'中文',2)          # 字母對應的ASCII值
#常見內置函數之類型轉換int(),float(),str(),unicode(),bool()
print int("123")              # 全數字
# print int("123")            # 報錯信息
print str(123)                # 全數字
print unicode('abc')

# ★函數名其實就是指向一個函數對象的引用,能夠把函數名賦給一個變量,至關於給這個函數起了一個「別名」
len_str = len
len_list = len
print len_str("abcd")
print len_list([1,2,3,4])

運行效果:htm

二、Python內置的函數只能協助解決部分問題,實際中最經常使用到的是自定義函數,將重複性高的代碼段,本身封裝成函數,以簡化操做。同時自定義函數時應注意一些問題。對象

# ★★★自定義函數
PI = 3.14
def area_of_circle(r):
    if r <= 0:
	    return None
    else:
	    return PI * r * r
print area_of_circle(2)
# 自定義函數須要使用def語句,冒號後的代碼塊中寫函數體
# 函數遇到return,當即結束,並返回結果。若是沒有return,函數執行完畢,會自動返回None;return None等同於return

# ★空函數
# 若是想定義一個什麼也不作的函數,或者函數體還沒想好的函數,此時能夠定義成一個空函數
def get_a_girlfriend():
    pass
print get_a_girlfriend()
# pass語句表示什麼也不作,經常使用做佔位符或內容沒想好的地方
if 19 >= 18:
    pass

# ★參數檢查==》藉助內置函數isinstance()
# 解釋器能夠對自定義函數進行參數個數檢查,可是不會進行參數類型檢查,如今爲完善自定義函數,自行設置參數檢查
# 對area_of_circle(r)函數設置參數檢查,傳入的參數只容許是int和float
PI = 3.14
def circ_of_circle(r):
    if not isinstance(r,(int,float)):
	    raise TypeError("bad operand type! only for int or float!")
    if r <= 0:
	    return None
    else:
	    return 2 * PI * r
# print circ_of_circle('a')   # 查看報錯
print circ_of_circle(2)

# ★函數同時返回多個值
# 須要提早說明的是,Python函數確實能夠同時返回多個值,這點與其餘語言有點不同

# 導入Python內置的模塊用關鍵字import。例如import 模塊名。具體到某個方法能夠用from 模塊名 import 方法名 
# 對於第一種,訪問該模塊內方法時須要模塊名.方法名。第二種能夠直接使用方法名

# 建立一個移動的點的位置座標.參數是起始點座標,位移大小,角度
import math
def Point_Move(x, y, displace, angle):
    xx = x + displace * math.cos(angle)
    yy = y - displace * math.sin(angle)
    return xx, yy
nx, ny = Point_Move(100,100,20,math.pi / 6)
print nx, ny
# 從上看出,咱們確實同時獲得了兩個返回值
print Point_Move(100,100,20,math.pi / 6)
# 可是,這句的返回值倒是一個tuple類型的值【本質上返回的就是一個tuple】
nx, ny = Point_Move(100,100,20,math.pi / 6)
print nx
# 這句話說明返回的tuple能夠由幾個變量同時、分別對應接收【本質上返回的是tuple,可是寫成返回多個值更方便分析數據】

運行效果:utf-8

相關文章
相關標籤/搜索