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

python—高級特性

編輯:Python

一、生成式

1.列表生成式

列表生成式就是一個用來生成列表的特定語法形式的表達式。是Python提供的一種生成列表的簡潔形式, 可快速生成一個新的list。
普通的語法格式:[exp for iter_var in iterable]
帶過濾功能語法格式: [exp for iter_var in iterable if_exp]
循環嵌套語法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

比如 有下面的需求:

import string
import random
li = []
for i in range(100):
s = ''.join(random.sample(string.ascii_letters,4))
li.append(s)
print(li)

就可以用下面一行代碼搞定:

codes = [''.join(random.sample(string.ascii_letters,4)) for i in range(100)] ##將生成的字符串 存儲在列表中
print(codes)

同理,類似的需求

# nums = []
# for num in range(1,101):
# if num%3==0:
# nums.append(num)
# print(nums)

還是可以用一行代碼搞定

nums = [num for num in range(1,101) if num%3==0]
print(nums)

2.集合生成式

s= {i**2 for i in range(10)}
print(s)

3.字典生成式

d = {i:i**2 for i in range(10)}
print(d)

二、生成器

1.生成器實現的第一種方法

### 生成器實現的第一種方法: 將生成式改寫成生成器
nums = (i**2 for i in range(1000))
print(nums) ## 輸出generator
# 打印生成元素,方法一:逐個生成 下面的next表示逐個生成 用的時候再說
print(next(nums)) #0
print(next(nums)) #1
print(next(nums)) #4
print(next(nums)) #9
# 打印生成元素,方法二:for循環生成
for i in nums:
print(i)

2.生成器實現的第二種方法

### 生成器實現的第2種方法:yield關鍵字
# return: 函數遇到return就返回,return後面的代碼並不會執行。
# yield:遇到yield則停止執行代碼, 當再次調用next方法時,會從上次停止的地方繼續執行,遇到yield停止。
def login():
a = 1
return 'login'
# print(1) ## return之後的就不再執行了 所以這句話無效
print(login())
def login():
print('step1')
yield 1
print('step2')
yield 2
print('step3')
yield 3
g = login()
print(next(g))
**以下為輸出:**
step1
1

三、閉包

其特性如下:

# 1. 函數裡面嵌套函數
#2. 外部函數的返回值是內部函數的引用
#3. 內部函數可以使用外部函數的變量

##1. 函數裡面嵌套函數
# def tiemit():
# def warpper():
# print('warpper')
# print('timeit')
# tiemit()
輸出:
timeit
#2. 外部函數的返回值是內部函數的引用
def timeit():
def warpper():
print('warpper')
print('timeit')
return warpper
in_fun = timeit() ## wrapper函數, in_fun實質上就是wrapper函數
in_fun()
輸出:
timeit
warpper
#3. 內部函數可以使用外部函數的變量
# def timeit(name):
# def warpper():
# print('warpper'+name)
# print('timeit')
# return warpper
# in_fun = timeit(name='mananananan') ## wrapper函數, in_fun實質上就是wrapper函數
# in_fun()
輸出:
timeit
warppermananananan

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