python学习笔记(二)

本文深入讲解Python编程核心概念,包括斐波纳契数列生成、条件与循环控制、迭代器与生成器应用、函数参数传递机制及作用域解析,适合初学者及进阶者阅读。

python学习笔记(二)

  1. 斐波纳契数列:两个元素的总和确定了下一个数
a,b = 0,1
while b<=100:
	print(b,end=',')
	a,b = b,a+b
  1. if语句
#Python中没有switch – case语句
if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3
  1. 循坏语句
#else是判断条件False时执行,可以没有,break跳出循坏体,countine退出当前循环,进入下一次循环
#python没有do...while循环
while 判断条件:
    语句
else:
	语句
#如果while循环体中只有一条语句,可以简写
while(判断条件):print("heihei")
##################
for <variable> in <sequence>:
    <statements>
else:
    <statements>
  1. range()
#生成数列
range(5) # 0,1,2,3,4
range(5,9) # 5,6,7,8
range(0,10,3)  # 0,3,6,9 指定步长
range(-10, -100, -30) # -10,-40,-70
#结合range()和len()函数以遍历一个序列的索引
for i in range(len(list))
#range()创建列表
list(range(5))  # [0,1,2,3,4]
  1. pass语句
    pass是空语句,是为了保持程序结构的完整性。

  2. 迭代器
    迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
    迭代器有两个基本的方法:iter() 和 next(),分别用于创建迭代器对象和访问迭代器下一个元素。
    字符串,列表或元组对象都可用于创建迭代器。
    把一个类作为一个迭代器使用需要在类中实现两个方法__iter__() 与__next__()

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 #循环结束后,触发 StopIteration 异常,结束迭代。
 
myclass = MyNumbers() #类的实例
myiter = iter(myclass) #类作为迭代器
 
for x in myiter:
  print(x)
  1. 构造方法__init__()
    在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例
    __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
    __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。
    总结:实例不能访问私有属性或方法!

  2. 生成器
    在 Python 中,使用了 yield 的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只能用于迭代操作。

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=" ") #调用f的next()方法
    except StopIteration:
        sys.exit()
  1. 函数
    函数参数传递可变/不可变对象的区别:
    传不可变参数,相当于值传递,函数内部对参数重新赋值,函数外参数的值没有改变。可变参数,相当于引用传递,指向对象的指针没有变,所以对参数重新赋值,外部使用这个参数对值也会变。
    return [表达式] 语句用于退出函数,不带表达式的return语句返回None。
#参数形式分为:必需参数、关键字参数、默认参数、不定长参数
#必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
printinfo( age=50, name="runoob" )  #关键字参数,和顺序无关
def printinfo( name, age = 35 ):  #定义函数时默认参数值
def printinfo( arg1, *vartuple ): # *表示多余对参数以元组形式导入,**表示以字典形式导入
def f(a,b,*,c): #定义函数时,*单独出现,表示后面对参数必须以关键字参数导入
  1. 匿名函数
#使用 lambda 来创建匿名函数,不能访问自己参数列表之外或全局命名空间里的参数。
sum = lambda arg1, arg2: arg1 + arg2
  1. 变量作用域
    Python 中只有模块(module),(class)以及函数(def、lambda)才会引入新的作用域,也就是说除了以上,在其他代码块定义的变量,外部也可以访问。
    L (Local) 局部作用域
    E (Enclosing) 闭包函数外的函数中
    G (Global) 全局作用域
    B (Built-in) 内建作用域
    查找顺序: L –> E –> G –>B
    想要修改外部变量,使用**global(修改全局变量) 和 nonlocal(修改闭包函数外的函数中的变量)**关键字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值