bpython使用技巧 Python 小技巧

2021-10-25 17:29:29 字數 3486 閱讀 1391

python 隱秘的角落

1. *args 和 **kwargs 的使用

# 此處一定要注意 python 中有預設值得引數一定一定要放在沒有預設值的後邊。

# *args 是以元組型別傳入

# **kwargs 是字典型別傳入

def parameter_learn(parameter_1, parameter_2=none, *args, **kwargs):

""" *args, **kwargs 引數傳遞的使用

:param parameter_1: 此處的 parameter_1 一定要在 parameter_2 前面

:param parameter_2:

:param args: 當出現預設賦值時(ps:parameter_2=none) args 可能無法生效。

:param kwargs: 無順序新增加引數時將新引數直接傳入即可( ps:kwarg_1=1 ) ; 引數將以字典的形式傳入

:return:

print(parameter_1, parameter_2)

print(args)

print(kwargs)

parameter_learn(parameter_1=1, parameter_2=2, kwarg_1=1)

"""result:

1 2# 按位置傳參

def parameter_learn2(parameter_1, parameter_2, *args, **kwargs):

:param parameter_1: 第乙個位置引數

:param parameter_2: 第二個位置引數

:param args: 第二個後面的位置引數

:param kwargs: 字典傳入的引數

:return:

print(parameter_1, parameter_2)

print(args)

print(kwargs)

parameter_learn2(1, 2, 3, 4, 5, kwarg_1=1, kwarg_2=2)

"""result:

1 2(3, 4, 5)

2. 三元運算子

if-else 語句

# 普通判斷語句

a = 10

if a < 11:

a += 1

print(a)

else:

a -= 1

print(a)

"""result:

# 三元表示式

# 格式:(變數1) = 符合條件返回:(變數 or 常量 or 表示式) if (條件) else 否則不符合條件返回:(變數 or 常量 or 表示式)

a = 10

b = a + 1 if a < 11 else a - 1

print(b)

"""result:

3.列表推導式

# 列表推導式 生成乙個列表 0-99 能被2整除 或者 能被3整除的自然數

a_list = [x for x in range(0, 100) if x % 2 == 0 or x % 3 == 0]

print(a_list)

# result:

[0, 2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 26, 27, 28, 30, 32, 33, 34, 36, 38, 39, 40, 42, 44, 45, 46, 48, 50, 51, 52, 54, 56, 57, 58, 60, 62, 63, 64, 66, 68, 69, 70, 72, 74, 75, 76, 78, 80, 81, 82, 84, 86, 87, 88, 90, 92, 93, 94, 96, 98, 99]

4.數值互換

# python 可以直接進行數值互換

a = 1

b = 2

c = 3

a, b, c = b, c, a

print(a, b, c)

# result:

3 1 4

5.反轉

# 字串反轉

str1 = "123456789"

print(str1[::-1])

# 987654321

# 列表反轉

list1 = [1, 2, 3, 4, 5, 6, 7]

print(list[::-1])

# [7, 6, 5, 4, 3, 2, 1]

6.for - else 組合

# for-else 語句。

for i in [1, 2, 3, 4]:

print(i)

if i == 1:

# 當執行 break 語句時, else是不會執行的。

break

# 只要執行完 for 迴圈語句就會執行 else。

else:

print("i am else")

7. lambda 匿名函式

# x, y 是引數, x + y 是返回值

func = lambda x, y: x + y

print(func(1, 2))

# result:

# 38.生成器 和 迭代器

# 迭代器

class mynumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

x = self.a

self.a += 1

return x

myclass = mynumbers()

myiter = iter(myclass)

print(next(myiter))

print(next(myiter))

print(next(myiter))

"""result:

# 生成器 (本質上也是迭代器)

# for 迴圈條件 迭代物件必須是可迭代物件

def get_number():

for data in range(0, 100):

# 有 yield 的就叫做生成器

yield data

a1 = get_number()

print(next(a1))

9.裝飾器

# 裝飾器

def learn(func):

def inner(*args, **kwargs):

print(args)

print(kwargs)

func(*args, **kwargs)

return inner

@learn

def learn1(a, b, *args):

print(a + b)

return a + b

learn1(1, 2, 90, 0)

# result:

(1, 2, 90, 0)

使用setuptools自動安裝python模組

setuptools絕對是個好東西,它可以自動的安裝模組,只需要你提供給它乙個模組名字就可以了,並且自動幫你解決模組的依賴問題。一般情況下用setuptools給安裝的模組會自動放到乙個字尾是.egg的目錄裡,下面看看怎麼用setuptools。之後安裝模組的使用方法就是使用乙個叫easy inst...

使用virtualenv建立虛擬python環境

環境 ubuntu 初始化環境 剛用到這個東西時,會聯想到虛擬機器和影子系統,不過相比於後兩者,virtualenv更為便捷。不需要重啟系統進入影子模式,也不需要啟動虛擬機器拖慢你的系統。你只需要通過命令建立乙個虛擬環境,不用的時候通過命令退出,甚至刪除,均可。安裝virtualenv 安裝過程可能...

爬蟲Scrapy框架的安裝和使用(Python)

好處 省事,快速搭建乙個系統,快速抓取資料。壞處 細節不清楚,框架的限制需要考慮,學習成本高,可能隱藏了很多未知的問題。安裝scrapy in ubuntu sudo apt get install python dev python piplibxml2 dev libxslt1 dev sudo...