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

python-函數入門(函數的引用,變量的作用域,參數傳遞,常見的四類型的參數,匿名函數,遞歸函數)

編輯:Python

一、函數的引用

# 0.常用的內置函數: max,min,sum, divmod
# 函數必須有輸入和輸出。
# max_num = max(1, 2, 3)
# print(max_num)
# 1.如何創建函數?定義函數,函數內容並不會執行
# 函數的輸入專業叫參數, 函數的輸出叫返回值。
# 重點:
# - 形參: 形式參數,不是真實的值(定義函數時的參數)
# - 實參:實際參數, 是真實的值(調用函數時的參數)
def get_max(num1, num2):
result = num1 if num1 > num2 else num2
return result
# 2. 如何調用函數?
max_num = get_max(30, 80)
print(max_num)

二、變量的作用域

首先要了解可變數據類型不可變數據類型

可變數據類型就是可以進行增刪改的數據類型,反之為不可變數據類型。
可變數據類型:列表(list)、集合(set)、字典(dict)
不可變數據類型:元組(tuple)、字符串(str)、數值形

接下來,了解全局變量與局部變量

# 1. 全局變量: 全局生效的變量。函數外面的變量。
name = 'admin'
def login():
print(name)
login()
# 2. 局部變量: 局部生效的變量。函數內部的變量。
def logout():
age = 19
print(age)
logout()
# 3. 函數內部修改全局變量.
# 1). money是局部變量還是全局變量? 全局變量
# 2). 如果要在函數中修改全局的變量,不能直接修改。 需要用global關鍵字聲明修改的變量是全局變量。
# 3). 不可變數據類型修改全局變量一定要global聲明, 可變數據類型不需要。
def hello():
global money
money += 1
users.append('user1')
print(money, users)
money = 100 # 不可變數據類型
users = [] # 可變數據類型
hello()

三、參數傳遞

  1. 形參和實參
  2. 參數檢查:isinstance(var, int)判斷變量var是否為int
def get_max(num1: int, num2: int) -> int:
"""
求兩數的最大值
:param num1: 整型數1
:param num2: 整型數2
:return: 最大值
"""
## 上面相當於在給定義的函數做聲明。
if isinstance(num1, int) and isinstance(num2, int):
return num1 if num1 > num2 else num2
else:
return 0
result = get_max(6.3, 2) ## 這樣就連返回值都是0
print(result)

四、常見的四類參數

1. 必選參數:必須要傳遞的參數

def get_max(num1: int, num2: int) -> int:
return num1 if num1 > num2 else num2
result = get_max(20, 30)
print(result)

2. 默認參數:可傳可不傳的參數

def pow(x, y=2):
return x ** y
result = pow(3) # x=3, y=2, result=9
print(result)
result = pow(2, 4) # x=2,y=4, result=2**4=8
print(result)

3. 可變參數: 參數的個數會變化,可以傳0,1,2,3,…n

args是元組
args=arguments

def my_sum(*args):
return sum(args)
result = my_sum(4, 5, 6) # 15
print(result)

4. 關鍵字參數:可以傳遞key和value

kwargs存儲在字典中

def enroll(name, age=18, **kwargs):
print(f"“”
入學信息
1. 姓名:{name}
2. 年齡:{age}
3. 其他:{kwargs}
“”")

enroll(‘張三’, country=‘china’, english=‘GRE’, sports=[‘籃球’, ‘羽毛球’])

五、匿名函數

1.匿名函數的定義及基本示例

**匿名函數指一類無須定義標識符的函數或子程序。Python用lambda語法定義匿名函數,只需用表達式而無需申明。(省略了用def聲明函數的標准步驟)

Python用lambda語法定義匿名函數,只需用表達式而無需申明。(省略了用def聲明函數的標准步驟)**

## 實際上 lambda :,冒號前面是你要輸入的值,冒號後面是你要輸出的值
pow = lambda x, y=2: x ** y
print(pow(2))
get_max = lambda num1,num2 :num1 if num1 > num2 else num2
print(get_max(1,2))
sumjiang = lambda *args : sum(args)
print(sumjiang(1,2,6))

2.匿名函數例題

給定一個整形數組, 將數組中所有的0移動到末尾, 非0項保持不變;
在原始數組上進行移動操作, 勿創建新的數組;
輸入: 數組的記錄;0 7 0 2
輸出: 調整後數組的內容; 7 2 0 0
# nums = [0,7,0,2]
# num = sorted(nums,reverse=True)
# print(num)
## 偶數在前 奇數在後
nums = [0, 7, 0, 2]
num = sorted(nums, key=lambda nums: 0 if nums % 2 == 0 else 1)
print(num)
nums = [0, 7, 0, 2]
a= sorted(nums,key=lambda nums: 1 if nums == 0 else 0)
# nums.sort(key=lambda nums: 1 if nums == 0 else 0)
print(a)

3.sort()和sorted()的區別

1.sort() 是 list 的方法,只有 list 能用,而sorted() 是內置函數,可以對所有可迭代的對象進行排序操作;
sort()在對列表排序時需要單獨使用,sort()方法是在原地對列表排序,是對原列表的直接操作,並不會返回一個新的列表。sort()方法需要單獨使用,如果和賦值,打印等方法一起使用,結果會返回None
2.list 的 sort() 方法是原地操作,無返回值,而內置函數 sorted() 方法是返回一個新的 list。

sorted() 的用法
語法:
sorted(iterable, key=None, reverse=False)

參數:
iterable – 表示可以迭代的對象,例如可以是dict.items()、dict.keys()等。
key – 是一個函數,用來選取參與比較的元素。
reverse – 排序規則,reverse = True 降序 , reverse = False 升序(默認)。

六、遞歸函數

## leecode上大部分二叉樹的題目 大部分都要用到遞歸函數
res = 1
n= input()
for i in range(1,int(n)+1):
res = res*i
print(res)
以下為遞歸函數的使用:
# def f(n):
# if n ==1:
# return 1
# else:
# return n*f(n-1)
# print(f(5))

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved