Python 条件、循环及其它语句

Python 条件、循环及其它语句

重点理解 python 中的条件语句,循环语句以及列表推导,还有 pass,del 和 exec

导入重命名

from [somemodule] import [somefunction] as [aliasname] 

多种导入方式

import somemodule
from some import somefunction
from somemodule import somefunction, anotherfunction, yetanotherfunction
from somemodule import *

赋值魔法

解构变量赋值

value = 1, 2, 3
x, y, z = value

可以通过星号运算符*来收集多余的值,这样无需确保值和变量的个数相同。带星号的变量最终包含的总是一个列表

a, b, *rest = [1, 2, 3, 4]
a, *b, c = "abc"

链式赋值

x = y = somefunction()

# 等价于
y = somefunction
x = y

增强赋值

可以让代码更紧凑、更简洁、同时可以增强可读性

x = 2
x += 1

代码块

python 默认使用 4 个空格来进行缩进

条件和条件语句

python 中,下面的值都被解释器视为,而其他的都被视为

  • False # 布尔假值
  • None # 空值
  • 0 # 数字零
  • ''/ "" # 空字符串
  • () # 空的元祖
  • [] # 空的列表
  • {} # 空的字典

if 语句和 if 条件表达式

if 语句较为平常,if 条件表达式,是 C 语言中三目运算符的 Python 版本

some_var = 'code' if 'foo' == 'bar' else 'lesser'

如果条件(紧跟在 if 后面)为真,则提供的第一个值(这里为 ‘bar’),否则为第二个值(这里为 ‘lesser’)

elif

是 else if 的缩写,由一个 if 子句和一个 else 子句组合而成,也就是包含条件的 else 子句

循环

while 循环

while condition_expr:
    do_something

for 循环

for [item] in [iterable_object]:
    do_something

并行迭代

使用 zip 函数

使用 zip 函数,将两个可迭代的函数缝合起来,并返回一个由元组组成的序列

a = ['a', 'b', 'c']
b = [1, 2, 3]

for one, two in zip(a, b):
    print(one, two)
使用 enumerate 函数

可以为可迭代对象添加索引

strings = ['code', 'lesser']
for index, string in enumerate(strings):
    if 'code' in string: 
        strings[index] = 'hello world'

跳出循环

  • break
  • continue

循环中的 else 子句

else 子句,它仅在没有调用 break 时才执行,也就是 for 循环执行完成,并且没有被 break 打断

from math import sqrt
for n in range(99, 81, -1):
    root = sqrt(n)
    if root == in(root):
        print(n)
        break
else:
    print("Didn't find it!")

推导

列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导。列表推导的工作原理非常简单,有点类似于 for 循环

[x * x for x in range(10)]
[x * x for in range(10) if x % 3 == 0]

pass

使用 pass 语句,表示什么都不做,因为在 python 中代码块不能为空。要修复这个问题,只需在中间的代码块中添加一条 pass 语句

del

不仅会删除到对象的引用,还会删除名称本身

foo = 'bar'
del foo

foo = ['code', 'lesser']
del foo[0]

exec & eval

exec

函数 exec 将字符串作为代码执行。还应该向它传递一个命名空间–用于防止变量名重复的地方;否则代码将污染你的命名空间

from math import sqrt
scope = {}
exec('sqrt = 1', scope)
print(scope['sqrt'])
print(sqrt(4))

如果尝试将 scope 打印出来,将发现它包含很多的内容,这是因为自动在其中添加了包含所有内置函数和值的字典 builtins

scope.keys() # ['sqrt', '__builtins__']

eval

exec 执行一系列 python 语句,而 eval 计算用字符串表示的 python 表达式的值,并返回结果(exec 什么都不返回,因为它本身是条语句)
同样可以向 eval 提供一个命名空间,虽然表达式通常不会向语句那样给变量重新赋值

result = eval('"foo" == "bar"')
print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GettingReal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值