node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)
一、函數(shù)
1、函數(shù)定義
def? 函數(shù)名(參數(shù)列表):
2、返回值 return
返回值可以有多個,其實是返回一個tuple
##多個返回值
def sumDiff(x,y):
return x+y,x-y
n1,n2 = eval(input('輸入兩個數(shù):'))
s,d = sumDiff(n1,n2)
print('和為{},差為{}'.format(s,d))
##計算三角形周長
import math
def square(x):
return x*x
#計算兩點之間的距離
def distance(x1,x2,y1,y2):
dist = math.sqrt(square(x1-x2) + square(y1-y2))
return dist
#判斷三個點是否構成三角形
def isTriangle(x1,y1,x2,y2,x3,y3):
flag = ((x1-x2)*(y3-y2) - (x3-x2)*(y1-y2)) != 0
return flag
def main():
print('輸入三個坐標點(x,y):')
x1,y1 = eval(input('坐標點1(x1,y1)='))
x2, y2 = eval(input('坐標點2(x2,y2)='))
x3, y3 = eval(input('坐標點3(x3,y3)='))
#判斷三個點是否構成三角形
if(isTriangle(x1,y1,x2,y2,x3,y3)):
##計算三角形周長
perim = distance(x1,y1,x2,y2)+distance(x2,y2,x3,y3)+distance(x3,y3,x1,y1)
print('該三角形周長為:{:.2f}'.format(perim))
else:
print('三個點無法構成三角形')
main()
3、參數(shù)
①位置參數(shù)
②默認參數(shù)
一是必選參數(shù)在前,默認參數(shù)在后,否則Python的解釋器會報錯
二是如何設置默認參數(shù)----- 定義默認參數(shù)要牢記一點:默認參數(shù)必須指向不變對象!
空列表不可作為默認參數(shù)?? def? a(L=[]) ------->? def? a(L=None)
##列表最后加一個END
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
③可變參數(shù)(參數(shù)名前面加*,*args)(可以傳入0個或多個參數(shù),這些可變參數(shù)在函數(shù)調用時自動組裝為一個tuple)
## 計算 1*1+2*2+3*3+.....
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
## 傳參的時候,把list的所有元素作為可變參數(shù)傳進去
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
④關鍵字參數(shù)(**kw)(關鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關鍵字參數(shù)在函數(shù)內部自動組裝為一個dict)
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Michael', 30)
name: Michael age: 30 other: {}
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
⑤命名關鍵字參數(shù)
## name、age是位置參數(shù); *后面的city和job是命名關鍵字參數(shù)
def person(name, age, *, city, job):
print(name, age, city, job)
>>> person('Jack', 24, city='Beijing', job='Engineer') ##命名關鍵字參數(shù)必須傳入?yún)?shù)名
Jack 24 Beijing Engineer
## name、age是位置參數(shù);*args是可變參數(shù), city和job是命名關鍵字參數(shù)
def person(name, age, *args, city, job):
print(name, age, args, city, job)
⑥參數(shù)組合
參數(shù)定義的順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)、命名關鍵字參數(shù)和關鍵字參數(shù)。
def wrapper(*args, **kw):? ##可以接受任意參數(shù)的調用
⑦如果變量是可變對象【列表】,返回到調用程序后,對象會呈現(xiàn)被修改后的狀態(tài)
def addInterest(balances,rate):
for i in range(len(balances)):
balances[i] = balances[i] * (1+rate)
def test():
amounts = [1000,500,1200,789]
rate = 0.05
addInterest(amounts,rate)
print(amounts)
test() ##[1050.0, 525.0, 1260.0, 828.45]
**************實例**************
def calculateNum(principal):
# 計算星號的個數(shù)
total = int(principal*4/1000)
return total
def createTable(principal,apr):
# 為每一年繪制星號的增長圖
for year in range(1,11):
principal = principal * (1+apr)
print("%2d"%year,end='')
total = calculateNum(principal)
print('*'*total)
print('0.0K 2.5k 5.0k 7.5k 10.0k')
def main():
#輸入本金和利率
principal = eval(input('輸入本金:'))
apr = eval(input('輸入利率:'))
#建立圖表
createTable(principal,apr)
main()
⑧參數(shù)檢查(先對參數(shù)的數(shù)據(jù)類型做檢查,拋出TypeError錯誤)
def my_abs(x):
if not isinstance(x, (int, float)): ## isinstance(x, (int, float) ) ------- 傳入?yún)?shù)是否為 int 或 float 類型,返回 True // False
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
4、空函數(shù)
def nop():
pass
二、全局變量和局部變量
1、可以用 global 保留字在函數(shù)內部使用全局變量
n , s = 10,100
def fact(n):
s = 1 ##局部變量s
for i in range(1,n+1):
s *= i
return s
print(fact(n),s) #362880000 100
n , s = 10,100
def fact(n):
global s ##聲明全局變量s
for i in range(1,n+1):
s *= i
return s
print(fact(n),s) #362880000 362880000
2、局部變量為組合類型且未創(chuàng)建,等同于全局變量
ls = ['a','d']
def func(a):
ls.append(a)
return
func('g')
print(ls) #['a', 'd', 'g']
ls = ['a','d']
def func(a):
ls = []
ls.append(a)
print(ls)
return
func('g') #['g']
print(ls) #['a', 'd']
三、lambda函數(shù)(特殊情況使用,建議使用def,固定情況使用)
= :
f = lambda x,y:x+y
print(f(3,4))
四、遞歸
在函數(shù)的定義中使用函數(shù)自身
1、函數(shù)+分支結構(if...else...)
2、基例
3、鏈條
##遞歸
##n!---n的階乘
def fact(n):
if n == 0:
return 1
else:
return n*fact(n-1)
print(fact(5))
##字符串反轉 s[::-1]
def reverse(s):
if s == '':
return s
else:
return reverse(s[1:]) + s[0]
print(reverse('Hello'))
斐波那契數(shù)列
def f(n):
if n == 1 or n == 2:
return 1
else:
return f(n-1) + f(n-2)
五、PyInstaller庫(第三方庫)
將 .py文件 轉換成 無需源代碼的可執(zhí)行文件 exe文件
先安裝pyinstaller庫
將print1.py文件轉換成exe文件,在【dist】文件夾中,【_pycache_】和【build】文件夾可以刪掉
總結
以上是生活随笔為你收集整理的node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python argument list
- 下一篇: python socket send_p