1. 程式人生 > 遊戲 >《FIFA22》測試因洩露被EA終止 玩法和圖示已流出

《FIFA22》測試因洩露被EA終止 玩法和圖示已流出

一、匿名函式

匿名函式的定義

匿名函式就是沒有名字的函式,用於臨時使用一次的場景,用完該記憶體就會被回收,更多的是將它與其它函式配合使用

def foo(x,y):  # foo為函式名 x,y為引數
  return x+y  # 函式體程式碼


lambda x,y:x+y. # 匿名函式沒有函式名直接寫作一行
# 也沒有return 直接返回該函式體程式碼的值

# 也可以將匿名函式賦值給變數名,賦值後變數名加括號就會觸發函式體程式碼的執行,但這樣就沒了匿名函式的意義

匿名函式的應用

info = [{'name': 'egon', 'sex': 'male', 'age': '18', 'salary': '3000'}, {'name': 'alex', 'sex': 'male', 'age': '38', 'salary': '30000'}, {'name': 'wupeiqi', 'sex': 'female', 'age': '28', 'salary': '20000'}, {'name': 'yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'}]
# 1、取出薪資最高的人的資訊
# 那肯定用到max函式 但max對字典肯定是不能直接比較的
# 首先定義個函式 
def func(info):
  return info[salary]  # 返回需要對比的值,salary的值
# 但是這個函式我們只是臨時使用一次,那我們就可以將它變成匿名函式臨時使用一下==>lambda info: info['salary']
print(max(info,key=lambda info: info['salary']))
# key賦值是max的內建用法
# 輸出結果為  {'name': 'alex', 'sex': 'male', 'age': '38', 'salary': '30000'}
print(max(i['salary'] for i in info)) # 取出工資

# 2、取出最年輕的人的資訊
print(min(info, key=lambda info: info['age']))
print(min(i['age'] for i in info)) # 取出最小年齡

map、filter 和 reduce

map() 會根據提供的函式對指定序列做對映

第一個引數 function 以引數序列中的每一個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表

# map()函式語法
map(function,iterable,...) 
# function--函式    iterable--一個或多個序列

map() 應用

# python2返回的是列表  python3返回的是一個迭代器這時候需要list
list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 計算列表各個元素的平方

# 輸出結果 [1, 4, 9, 16, 25]

list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])) # 提供了兩個列表,對相同位置的列表資料進行相加

# 輸出結果 [3, 7, 11, 15, 19]

names = ['lxx', "hxx", "wxx"]
map(lambda name:name+"_vip",names)

# 將names列表後面加上"_vip" 輸出為新列表

filter()函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表

該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判斷,然後返回 True 或 False,最後將返回 True 的元素放到新列表中

# filter 函式語法
# python2返回的是列表  python3返回的是一個迭代器
filter(function,iterable)
# function--判斷函式    iterable--可迭代物件

filter()應用

# 過濾列表中所有的奇數
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_odd(n): # 判斷函式
	return n % 2 == 1
# 變成匿名函式 lambda n:n % 2 == 1

list(filter(lambda n:n % 2 ==1,l))
# 輸出結果[1, 3, 5, 7, 9]

# 過濾列表中以‘_vip’結尾的
names = ['lxx', "hxx_vip", "wxx_vip"]
list(filter(lambda name:name.endswith('_vip'),names))

reduce()函式會對引數序列中元素進行累積

函式將一個數據集合(連結串列,元組等)中的所有資料進行下列操作:用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到一個結果

#  Python3.x reduce() 已經被移到 functools 模組裡,如果我們要使用,需要引入 functools 模組來呼叫 reduce() 函式
# 語法
from functools import reduce

reduce(function, iterable[, initializer])

# function -- 函式,有兩個引數
# iterable -- 可迭代物件
# initializer -- 可選,初始引數

reduce()應用

reduce(lambda x, y: x+y, [1,2,3,4,5]) # 計算列表和

# 輸出結果為 15

面向過程程式設計思想

面向過程的程式設計思想:核心是 “過程” 二字,過程即流程,指的是做事的步驟:先做什麼,再做什麼,後做什麼,基於該思想編寫程式就好比在設計一條流水線

優點:複雜的問題流程化、進而簡單化

缺點:擴充套件性非常差,牽一髮而動全身

面向過程的程式設計思想應用場景解析:

1、不是所有的軟體都需要頻繁更迭:比如編寫指令碼

2、即便是一個軟體需要頻繁更迭,也不併不代表這個軟體所有的組成部分都需要一起更迭