關於變數引數的傳遞,python讓人蛋痛的地方
阿新 • • 發佈:2019-01-07
def find_file(file_table):
with open(file_table, 'r', encoding='utf-8') as read_f:
line_dict = {}
for line in read_f:
line_list = line.strip().split(',')
line_dict['staff_id'] = line_list[0]
line_dict['name'] = line_list[1]
line_dict['age'] = line_list[2]
line_dict['phone'] = line_list[3]
line_dict['dept'] = line_list[4]
line_dict['enroll_date'] = line_list[5]
yield line_dict
def find_file_content(file_table,query_condition,sep=None): #傳入 檔名 查詢條件 和 條件內容
staff_info_genertor = find_file(file_table) #獲取生成器 傳過來的是一個字典
condition_query = [] #部門時IT的所有人的資訊
while True:
try:
staff_info = next(staff_info_genertor) #接收生成器每次傳過來的值
if sep.isalpha(): #如果是字母
if staff_info[query_condition] == sep:
condition_query.append(staff_info)
except StopIteration as e:
break
print(condition_query)
執行結果:
[{'staff_id': '10', 'name': 'Mosson', 'age': '18', 'phone': '13188888888', 'dept': 'IT', 'enroll_date': '2018-12-11'},
{'staff_id': '10', 'name': 'Mosson', 'age': '18', 'phone': '13188888888', 'dept': 'IT', 'enroll_date': '2018-12-11'}]
第二個例子
for i in range(1, 10):
f = lambda x: x * i
l.append(f) # 每次都新增一個函式進列表,函式的 i 是一個變數。每次迴圈變數的值,就會跟著改變。 # python採用的是引用的機制,這裡 雖說每次都新增一個元素到列表裡。但是 如果這個元素是個變數的話。每次的引用都會被指向新的位置。 for f in l:
print(f(1)) 執行結果是: 9 9 9 9 9 9 9 9 9 第三個例子
i = 0
for i in range(1,10):
print(i)
print(i)
執行結果
1
2
3
4
5
6
7
8
9
9 # i 是一個變數。每次都對他賦值。最後一次是9 所以print的是9