成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五個實(shí)用卻被忽略的Python功能

開發(fā) 前端
Python中的for?循環(huán)可以添加else?子句。只有在執(zhí)行循環(huán)體期間沒有遇到break?語句時,else子句才會被激活。

Python文檔中有一些不起眼卻很強(qiáng)大的功能,以下是在Python中一些很有用的操作。

1.函數(shù)屬性

你可以以類似于為類和對象設(shè)置特征的方式為函數(shù)設(shè)置特征。

def func(x):
    intermediate_var = x**2 + x + 1

    if intermediate_var % 2:
        y = intermediate_var ** 3
    else:
        y = intermediate_var **3 + 1

    # 在這里設(shè)置屬性
    func.optional_return = intermediate_var
    func.is_awesome = 'Yes, my function is awesome.'

    return y

y = func(3)
print('Final answer is', y)
# 訪問函數(shù)屬性
print('Show calculations -->', func.optional_return)
print('Is my function awesome? -->', func.is_awesome)

在第10行和第11行,分別設(shè)置了屬性“optional return”和“is awesome”。稍后,在第19行和第20行,我們對這些屬性進(jìn)行了外部調(diào)用。代碼的輸出將是:

Final answer is 219
Show calculations --> 13
Is my function awesome --> Yes, my function is awesome

當(dāng)不想在每次運(yùn)行函數(shù)時使用返回語句顯式地返回一個變量,但仍然想恢復(fù)作為中間值傳入的變量時,這很有用。此外,請注意,屬性可以從函數(shù)聲明內(nèi)部或外部設(shè)置。

2.帶else的for循環(huán)

Python中的for循環(huán)可以添加else子句。只有在執(zhí)行循環(huán)體期間沒有遇到break語句時,else子句才會被激活。

my_list = ['some', 'list', 'containing', 'five', 'elements']

min_len = 3

for element in my_list:
    if len(element) < min_len:
        print(f'Caught an element shorter than {min_len} letters')
        break
else:
    print(f'All elements at least {min_len} letters long')

請記住,else是插入在for的層次上而不是if上。在這個例子中,沒有任何元素的長度小于3。因此,break語句永遠(yuǎn)不會被使用。因此,在for循環(huán)完成之后,else子句將被激活,打印出上面顯示的輸出。

有人可能會認(rèn)為,可以通過記住是否在另一個變量中找到了break語句來實(shí)現(xiàn)此操作。此外,對于在這之后的讀者來說,這可能會使代碼更易于理解。獲取相同結(jié)果的等效方法如下:

my_list = ['some', 'list', 'containing', 'five', 'elements']

min_len = 3

no_break = True
for element in my_list:
    if len(element) < min_len:
        print(f'Caught an element shorter than {min_len} letters')
        no_break = False
        break

if no_break:
    print(f'All elements at least {min_len} letters long')

3.‘int’類型的分隔符

像10000000和100000000這樣的整數(shù)(它們真的是不同的數(shù)字嗎?)在視覺上很難區(qū)分。在這種情況下,Python會將逗號在此上下文中解釋為多個整數(shù)的元組,因此無法像英語中那樣使用它們。

但是Python有一個非常實(shí)用的解決方案:我們可以使用下劃線作為分隔符,使代碼更具可讀性。因此,1_000_000將被視為單個整數(shù)。

a = 3250
b = 67_543_423_778

print(type(a))
print(type(b))

OUTPUT:
<class 'int'>
<class 'int'>
True

4.eval()和exec()

Python可以動態(tài)地讀取一個字符串,并將其視為一行代碼。用于評估表達(dá)式和執(zhí)行語句的eval()和exec()函數(shù)用于執(zhí)行此操作。

a = 3

b = eval('a + 2')
print('b =', b)

exec('c = a ** 2')
print('c is',c)

在第3行,eval()函數(shù)將輸入字符串讀取為Python表達(dá)式,對其進(jìn)行評估,并將結(jié)果分配給變量‘b’。

第6行的exec()函數(shù)將輸入字符串讀取為Python語句并執(zhí)行它。

你還可以將動態(tài)構(gòu)造的字符串傳遞給這些函數(shù)。例如,你可以創(chuàng)建1000個名為x_0、x_1、……、x_999的變量,而不必在代碼中手動編寫這些變量聲明。這可能看起來是一個完全沒有意義的功能,但事實(shí)并非如此。

在一般編程的大背景下,不僅僅是Python,在運(yùn)行時使用eval/exec這種方法非常強(qiáng)大,因?yàn)樗试S你編寫動態(tài)代碼,使用運(yùn)行時可用的信息來解決甚至在編譯時無法表達(dá)的問題。[......]exec實(shí)際上是一個嵌入Python內(nèi)部的Python解釋器,所以如果你有一個特別難解決的問題,你可以解決它的方法之一就是編寫一個程序來“編寫一個程序來解決它”,然后使用exec來運(yùn)行這第二個程序。

你可以在如下網(wǎng)址閱讀Steven D’Aprano對eval和exec的分析:

https://mail.python.org/pipermail/tutor/2015-February/104238.html

5.省略號

Ellipse或“...”是Python內(nèi)置的常量,類似于None、True或False等內(nèi)置常量。它可以用于各種場合,包括但不限于:

5.1 未編寫代碼的占位符

與pass一樣,當(dāng)代碼未完全編寫,但需要語法上的占位符時,省略號可以用作通配符。

def some_function():
    ...
    
def another_function():
    pass

5.2 “None”的替代品

如果你想表示一個空的輸入或返回值,通常會選擇None。然而,在某些情況下,None是期望的輸入或函數(shù)返回值之一。在這種情況下,省略號充當(dāng)占位符。

# 計算第n個奇數(shù)
def nth_odd(n):
    if isinstance(n, int):
        return 2 * n - 1
    else:
        return None
        
# 計算第n個奇數(shù)的原始n
def original_num(m=...):
    if m is ...:
        print('This function needs some input')
    elif m is None:
        print( 'Non integer input provided to nth_odd( ) function')
    elif isinstance(m, int):
        if m % 2:
            print(f'{m} is {int((m + 1)/2)3th odd number')
        else:
            print(f'{m} is not an odd number')
original_num()

a = nth_odd(n='some string')
original_num(a)

b = nth_odd(5)
original_num(b)

original_num(16)

nth_odd()函數(shù)計算第n個奇數(shù),original_num()函數(shù)計算從第n個奇數(shù)推導(dǎo)出的原始數(shù)字n。

在這里不能使用None,因?yàn)樗莖riginal_num()函數(shù)的期望輸入之一。它們被用作m參數(shù)的默認(rèn)占位符。代碼的輸出如下所示:

This function needs some input
Non integer input provided to nth_odd() function
9 is 5th odd number
16 is not an odd number

5.3 NumPy中的數(shù)組切片

NumPy使用省略號來切片數(shù)組。下面的代碼展示了兩種等效的分割NumPy數(shù)組的方式。

import numpy as np

a = np.arange(16).reshape(2,2,2,2)

print(a[..., 0].flatten())
print(a[:, :, :, 0].flatten())

OUTPUT:
[ 0  2  4  6  8 10 12 14]
[ 0  2  4  6  8 10 12 14]

因此,“…”表示需要多少個“:”。

Ellipsis布爾值

與None(布爾值為False)不同,Ellipsis布爾值被認(rèn)為是True。

責(zé)任編輯:武曉燕 來源: Python學(xué)研大本營
相關(guān)推薦

2009-05-31 09:30:00

路由器交換機(jī)功能

2009-05-09 17:02:34

2023-10-26 18:03:14

索引Python技巧

2022-03-31 11:56:34

Android 12智能手機(jī)功能

2010-05-25 09:02:21

Windows 7

2010-08-27 10:12:53

CSS

2015-12-21 10:53:38

網(wǎng)絡(luò)邊界安全信息安全策略

2022-12-06 17:18:42

2021-03-28 22:55:44

Python編程技術(shù)

2023-08-31 12:01:14

數(shù)據(jù)分析體系

2011-11-18 09:28:17

地理位置API

2023-11-06 18:02:28

Linux實(shí)用命令

2021-05-04 21:06:04

零信任網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2023-09-21 12:37:34

IDEA

2022-04-30 19:22:35

Python編程語言

2009-07-09 17:47:40

使用JDBC

2024-08-13 15:09:41

2022-08-31 15:18:26

GNOMEGNOME 43

2009-08-25 14:25:19

Eclipse 3.5

2017-07-10 14:00:04

Python命令行
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品极品美女在线观看免费 | 91视频正在播放 | 久热国产精品视频 | 在线视频一区二区 | 亚洲区在线| 久久久久久一区 | 亚洲一区二区三区在线视频 | 久久久精品一区二区三区 | 欧美在线一区二区视频 | 可以在线看的黄色网址 | 噜啊噜在线 | 久久成人精品视频 | 欧美日韩国产传媒 | 国产高清视频一区 | 国产永久免费 | 日本午夜视频 | 久久久久久久国产精品 | 91久久精品日日躁夜夜躁国产 | 成人 在线| 91精品久久久久久久久中文字幕 | 九九九久久国产免费 | 在线看一区二区 | 久久久91精品国产一区二区三区 | 在线日韩中文字幕 | 一本一道久久a久久精品蜜桃 | 99精品在线免费观看 | 国产一区二区三区四区 | 亚洲国产精品一区二区www | 国产精品一二三区在线观看 | 国产欧美日韩一区 | 在线成人 | 黄色综合| 精品欧美色视频网站在线观看 | www.v888av.com| 婷婷综合激情 | 在线视频一区二区 | 久久精品国产一区 | 国产黄色在线观看 | 国产99久久精品一区二区300 | 国产免费又色又爽又黄在线观看 | 91精品国产综合久久久久蜜臀 |