bpython使用技巧_Python 小技巧

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

()

{'kwarg_1': 1}

"""

# 按位置传参

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)

{'kwarg_1': 1, 'kwarg_2': 2}

"""

2. 三元运算符

if-else 语句

# 普通判断语句

a = 10

if a < 11:

a += 1

print(a)

else:

a -= 1

print(a)

"""result:

11

"""

# 三元表达式

# 格式:(变量1) = 符合条件返回:(变量 or 常量 or 表达式) if (条件) else 否则不符合条件返回:(变量 or 常量 or 表达式)

a = 10

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

print(b)

"""result:

11

"""

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:

# 3

8.生成器 和 迭代器

# 迭代器

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:

1

2

3

"""

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

# 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)

{}

3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值