python自定義函數和內置函數

函數

1.定義

  • 函數是組織好的,可重複使用的,用來實現單一,或相關聯功能的代碼段。
  • 先定義,後使用

1.2分類

  • 系統函數
  • 自定義函數

1.3語法:

def functionname(parameters):
    "函數_文檔字符串"
    function_suite
    return [expression]

1.4函數的返回值

  • 函數執行完畢以後的返回的結果
  • 若是沒有給出返回值,默認返回None
  • 返回多個值時,返回類型爲元組

2.參數問題

2.2分類python

位置參數express

  • 默認狀況下,函數調用時參數的個數,位置參數與函數定義時一致
def fun1(a, b): print(a, b) fun1(1, 2)

關鍵字參數函數

  • 能夠將實參的值經過關鍵字來指定給具體給哪一個形參
  • 如:
def fun1(a, b):
    print(a, b)
  
fun1(b=1, a=2)

默認參數ui

  • 在定義時,形參若是給出了默認值,這時候,就是默認參數。 全部的默認參數必修放在最後
    默認參數在調用時,若是沒有實參對他進行賦值,他的值爲默認值,不然爲指定值
def fun1(a, b=2, c=3):
print(a, b, c)

fun1(1)
fun1(1, 3, 4)

 可變參數(能夠實現函數定義,以及函數調用時,參數個數不匹配的狀況)spa

  • *args :能夠給任意個參數code

def fun1(*args):
  print("type(args):", type(args))
  print("args:", args)
  print("*args:", *args)
  print("-" * 30)
  
fun1()
fun1(1)
fun1(1, 2)
fun1([1, 2, 3])

  

**kwargs :只能給鍵值對的參數(a=1, b=2)對象

def fun1(**kwargs):
  print("type(kwargs):", type(kwargs))
  print("kwargs:", kwargs)
  print("-" * 30)
  
fun1()
fun1(a=1, b=2, c=3)

*args 與 **kwargs 一塊兒使用blog

def fun1(*args, **kwargs):
  print("type(args):", type(args))
  print("args:", args)
  print("*" * 10)
  print("type(kwargs):", type(kwargs))
  print("kwargs:", kwargs)
  print("-" * 30)

fun1()
fun1(1)
fun1(1, 2, 3, a=4, b=5)

  

2序列解包

使用 *:索引

  • 完成str、list、tuple的解包
  • 對於字典,只解包key
  • 返回類型:tuple
a = [1, 2, 3]
b = *a,
print(type(b))
print(b)

  

a = [1, 2, 3]
b = (1, 2, 3)
c = "hello"
d = {'a': 1, 'b': 2}
print("a:", *a, "\nb:", *b, "\nc:", *c)
print("d:", *d)

  

使用 **:ip

  • 完成dict的解包
  • 解包爲: key1=value1 key2=value2
  • 不能直接打印
def fun1(**kwargs):
    print(kwargs)

d = {'a': 1, 'b': 2}
fun1(a=1, b=2)
fun1(**d)

  

3. 內置函數

3.1查看內置函數

  • import builtins
    print(dir(builtins))

3.2 經常使用內置函數

abs(x):求絕對值

  • x : 數值表達式,能夠是整數,浮點數,複數。

max(x):求最大值

  • x :Iterable(list,tuple,str,dict,set)
  • 關鍵字key,默認以每一個元素中的0號索引值查找最大元素
list1 = [(1001, "James", 40), (1000, "Jack", 20), (1002, "Lucy", 28)]
m = max(list1)
print(m)

  

  • 指定關鍵字key,自定義選擇每一個元素中的索引值,查找最大元素
list1 = [(1001, "James", 40), (1000, "Jack", 20), (1002, "Lucy", 28)]
m = max(list1, key=lambda item:item[2])
print(m)

  

map() :

  • 有兩個參數,第一個參數是一個函數,第二個參數是可迭代的內容。函數會依次做用在可迭代內容的每個元素上進行計算,而後返回一個新的可迭代內容

如:

def fun1(n):
    return n ** 2
    
list1 = [1, 2, 3, 4]
list2 = map(fun1, list1)
print(type(list2)
print([item for item in list2])

  

def fun1(a, b):
    return a + b
    
list1 = [1,2,3,4]
list2 = [2,3,4]
list3 = map(fun1, list1, list2)
# list3 = map(lambda a,b:a+b, list1, list2)
print([item for item in list3])

  

filter():

  • 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新「列表」(迭代器)
def func2(x):
  return x % 2 == 0
  
list1 = filter(func2, [1, 2, 3, 4, 5])
print(type(list1))
print([item for item in list1])

  

zip():

  • zip 函數接受任意多個可迭代對象做爲參數,將對象中對應的元素打包成一個tuple,而後返回一個可迭代的zip對象。這個可迭代對象能夠使用循環的方式列出其元素。若多個可迭代對象的長度不一致,則所返回的列表長度與參數中長度最短的可迭代對象相同
list1 = [1,2,3]
tuple1 = ('a', 'b', 'c', 'd')
str1 = "Hello"
v = zip(list1, tuple1, str1)
print(type(v))
print([item for item in v])

  

相關文章
相關標籤/搜索