python--2

本文详细介绍了Python中的条件语句,包括if、elif和else,以及while和for循环的使用。同时,探讨了函数的定义与调用,匿名函数lambda以及作用域的概念。此外,还讲解了迭代器和生成器的原理及应用,包括如何创建和使用迭代器,以及生成器的yield函数。通过实例展示了如何在实际编程中运用这些概念。
摘要由CSDN通过智能技术生成

条件语句

Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
在这里插入图片描述

# if语句的一般形式如下:
if condition_1:
	statement_block_1
elif condition_2:
	statement_block_2
else:
	statement_block_3

# if 语句简写
if condition_1: statement_block_1
statement_block_1 if condition_1 else statement_block_2

# if语句支持嵌入if

while循环

# while语句的一般形式
while condition:
	statement_block

# while ... else ...结构,如果 while 后面的条件语句为 false 时,则执行 else 的语句块。
while condition:
	statement_block
else:
	statement_block

# 利用break语句,可以终止循环,跳出while循环
i = 1
while i < 7:
  print(i)
  if i == 3:
    break
  i += 1

# continue 语句,停止当前迭代,继续下一个
i = 0
while i < 7:
  i += 1 
  if i == 3:
    continue
  print(i)

for 循环

Python for 循环可以遍历任何可迭代对象,如列表,元组,字典,集合或字符串。

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)

# 利用break语句可以终止for循环
fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x) 
  if x == "banana":
    break
#使用 continue 语句,我们可以停止循环的当前迭代,并继续下一个
fruits = ["apple", "banana", "cherry"]
for x in fruits:
  if x == "banana":
    continue
  print(x)

# range() 函数,返回一个数字序列,默认情况下从 0 开始,并递增 1(默认地),并以指定的数字结束(左闭右开)

# for 循环中的 else 关键字指定循环结束时要执行的代码块
for x in range(10):
  print(x)
else:
  print("Finally finished!")

# for循环支持嵌套循环

函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
定义函数规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和()
  • 任何传入参数和自变量必须放在()中,()中用于定义参数
  • 函数的第一行语句可以选择性地使用文档字符串 用于存放函数说明
  • 函数内容以冒号:起始,并且缩进
  • return语句 结束函数,选择性地返回一个值给调用方,不带表达式地return相当于返回None
    在这里插入图片描述
def 函数名(参数):
	函数体

调用函数
如需调用函数,请使用函数名称后跟括号:

函数参数分为形式参数、默认参数、关键字参数、不定长参数*args以及**keys
函数支持递归方式,即定义的函数能够调用自身。

匿名函数

即lambda函数,可接受任意参数量地参数,但只能有一个表达式:

lambda arguments : expression
  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

作用域

局部作用域:在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。

全局作用域: 在 Python 代码主体中创建的变量是全局变量,属于全局作用域。全局变量在任何范围(全局和局部)中可用。
如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部)

Global 关键字 :使变量成为全局变量。

num = 1
def fun1():
    global num  # 需要使用 global 关键字声明
    print(num) 
    num = 123
    print(num)
fun1()
print(num)

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

def outer():
    num = 10
    def inner():
        nonlocal num   # nonlocal关键字声明
        num = 100
        print(num)
    inner()
    print(num)
outer()

迭代器和生成器

迭代器
迭代是访问集合元素地一种方式。
迭代器是一种对象,该对象包含值的可计数数字。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()
字符串,列表或元组对象都可用于创建迭代器

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)  # 创建迭代器
print(next(myit)) 获取下一个元素
print(next(myit))
# 创建迭代器
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))
print(next(myiter))
print(next(myiter))
# StopIteration语句
#如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。为了防止迭代永远进行,我们可以使用 StopIteration 语句。
class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)

生成器
python中,使用yield函数被称为生成器
生成器是一个返回迭代器的函数, 只能用于迭代操作
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。

import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值