函數, get()與setdefault(), lambda表達式,三元運算, 遍歷list與dict的方法. ...
函數
- 函數:簡單的理解,就是一次執行很多行代碼
- 函數的返回值
- 函數的參數,和變數沒區別
例:
def hello():
print "hello world"
hello()
hello()
列印結果:
hello world
hello world
返回值:
def hello():
print "hello world"
print hello # 指函數,就是函數在記憶體里的一個地址.
print hello() # 指函數返回值
def hello():
# print "hello world"
return 2017
hello
print hello() 2017
參數:
def hello(name):
print "Hello %s" % name
return 2017
hello("yangbin")
print hello("asd")
執行結果:
Hello yangbin
Hello asd
2017
print是列印出來看.
return是返回值.
5階乘, 54321
f(n)
def f(num):
for i in range(1, int(num)+1):
count = i * int(num)
print count
f(5)
執行結果:
5
10
15
20
25
關鍵字參數的調用,和位置無關,只和名字相關:
def hello(name,age):
return name,age
print hello("yangbin", 22)
print hello(age = 22, name = "yangbin")
執行結果:
('yangbin', 21)
('yangbin', 22)
使代碼更健壯:
def hello(name = "yangbin",age = 22):
return name,age
print hello("yangbin", 22)
print hello()
執行結果:
('yangbin', 22)
('yangbin', 22)
參數不固定的時候:
關鍵字參數調用的時候,可讀性好
關鍵字參數在函數定義的時候,提供預設值
開頭的參數,收集所有剩下參數(位置參數) 元組
開頭的參數,收集所有剩下參數(關鍵字參數) 字典
1.多個函數之間,儘量避免全局變數
通用的函數:變化的東西,都由參數來定
函數當成參數傳遞
python自帶的sorted函數
sorted(待排序的list,key傳遞一個函數-決定根據元素的哪個屬性進行排序)
http://blog.csdn.net/zyl1042635242/article/details/43115675
函數當成參數,傳給了sorted
lambda 就是沒有名字的函數(特別簡單的,只有return語句的函數)
語法:
lambda 參數:返回值
示例:
def hello(x):
return x[1]
print hello([2,3])
hello = lambda x:x[1]
print hello([2,3])
執行結果:
3
3
函數作用域:
函數內部的變數和全局變數不是在一個區域里的,函數內部變數,現在函數內部找,找不到才會去全局找
函數內部作用域賦值,對外部無影響
函數內部想修改全局變數,要用global聲明一下
get()函數:
get() 函數返回指定鍵的值,如果值不在字典中返回預設值。
語法:
dict.get(key, default=None)
key -- 字典中要查找的鍵。
default -- 如果指定鍵的值不存在時,返回該預設值。
get()和setdefault()的區別:
一. get 函數 -- 獲得給定鍵相關聯的值
dict = {'name':'lorine','age':'25'}
dict.get('name') # 返回name對應的鍵值lorine,如果此鍵不存在字典中,則會返回None;
dict.get('work','student') # 如果對應的鍵'work'不在字典中,則會返回預設的'student'
二. setdefault 函數 -- 獲得給定鍵相關聯的值,並更新字典,還能在字典中不含有給定鍵的情況下設置相應的鍵值
dict = {'name':'lorine','age':'25'}
dict.setdefault('name') # 或者dict.setdefault('name','lili')都是返回name對應的值lorine;
dict.setdefault('work') # 此鍵值不存在,則更新字典添加此鍵和預設值dict ={'name':'lorine','age':'25','work':None};
dict.setdefault('work','student') # 則更新字典dict ={'name':'lorine','age':'25','work':'student'};
用get函數優化代碼:
D = {"192.168": 2}
ip = "192.168"
# if ip in D:
# D[ip] += 1
# else:
# d[ip] = 1
# print D
res = {}
res[ip] = D.get(ip, 0) + 1
print res
遍歷list的三種方法:
num = [1, 2, 3, 4, 5, 6]
for i in num:
print i
for i in range(len(num)):
print num[i]
for i,j in enumerate(num):
# print i, j
print j
遍歷dict的兩種方法:
info = {"name": "yangbin", "age": 22, "sex": "male"}
for i in info.keys():
print i, info[i]
for k,v in info.items():
print k,v
三元運算: 學習條件運算時,對於簡單的 if else 語句,可以使用三元運算來表示,即:
if 12 > 20:
print "True"
else:
print "False"
result = "True" if 12 > 20 else "False"
print result
運行結果:
False
False
lambda表達式: 對於簡單的函數,也存在一種簡便的表示方式,即:lambda表達式.
# 普通函數表示:
def f(num):
return num + 1
# print f(20)
result = f(20)
print result
# lambda表達式表示:
定義函數
my_lambda = lambda args: args + 1
執行函數
result = my_lambda(20)
print result