程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python基礎 Day3

編輯:Python

函數基礎

這一部分沒啥新內容,階乘例子:

def fac(num):
ans = 1
for x in range(1, num+1, 1)
ans *= x
return ans

有個新地方是可以接收多個參數,大概叫可變參數(加個星號

def sum(*num):
ans = 0
for x in num:
ans += x
return ans
print(sum(1, 2, 3, 4))

在解決命名沖突時,可以將同名函數寫到不同文件中,再import導入

as可以用來給模塊別名

import module1
import module2 as m2
module1.sum()
m2.sum()

還可以直接從模塊中導入需要的函數

from module1 import sum
sum()

一些進階用法

關鍵詞傳參

使用關鍵詞傳參的話可以不按順序,或者加 * 使在後面的參數必須按關鍵詞傳參

def is_triangle(a, b, c):
print(f'a = {a}, b = {b}, c = {c}')
return a + b > c and b + c > a and a + c > b
# 調用函數傳入參數不指定參數名按位置對號入座
print(is_triangle(1, 2, 3))
# 調用函數通過“參數名=參數值”的形式按順序傳入參數
print(is_triangle(a=1, b=2, c=3))
# 調用函數通過“參數名=參數值”的形式不按順序傳入參數
print(is_triangle(c=3, a=1, b=2))
def is_triangle(*, a, b, c):
print(f'a = {a}, b = {b}, c = {c}')
return a + b > c and b + c > a and a + c > b
# TypeError: is_triangle() takes 0 positional arguments but 3 were given
# print(is_triangle(3, 4, 5))
# 傳參時必須使用“參數名=參數值”的方式,位置不重要
print(is_triangle(a=3, b=4, c=5))
print(is_triangle(c=5, b=4, a=3))

或者使用 可變參數 + 關鍵詞傳參 ,在既不知道會傳入的參數個數,也不知道會不會指定參數名的情況下。

關鍵字參數會將傳入的帶參數名的參數組裝成一個字典,參數名就是字典中鍵值對的鍵,而參數值就是字典中鍵值對的值。

這裡沒怎麼看。。。大概先cv一下代碼

def calc(*args, **kwargs):
result = 0
for arg in args:
if type(arg) in (int, float):
result += arg
for value in kwargs.values():
if type(value) in (int, float):
result += value
return result
print(calc()) # 0
print(calc(1, 2, 3)) # 6
print(calc(a=1, b=2, c=3)) # 6
print(calc(1, 2, c=3, d=4)) # 10

Lambda函數

參數和返回值比較簡單,一行代碼解決的函數,又稱匿名函數

先不管了,,

裝飾器

用一個函數裝飾另外一個函數或類並為其提供額外功能

比方說要記錄一個函數運行的時間,可以這樣弄

import time
# 定義裝飾器函數,它的參數是被裝飾的函數或類
def record_time(func):
# 定義一個帶裝飾功能(記錄被裝飾函數的執行時間)的函數
# 因為不知道被裝飾的函數有怎樣的參數所以使用*args和**kwargs接收所有參數
# 在Python中函數可以嵌套的定義(函數中可以再定義函數)
def wrapper(*args, **kwargs):
# 在執行被裝飾的函數之前記錄開始時間
start = time.time()
# 執行被裝飾的函數並獲取返回值
result = func(*args, **kwargs)
# 在執行被裝飾的函數之後記錄結束時間
end = time.time()
# 計算和顯示被裝飾函數的執行時間
print(f'{func.__name__}執行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved