a, b = 0, 1
while b < 10:print(b)   #print(b,end=',')a, b = b, a+b相当于
n=b
m=a+b
a=n
b=m输出:
1
1
2
3
5
8#输出:
1,1,2,3,5,8

关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符!

条件控制:

  • 1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 3、在Python中没有switch – case语句。

循环:

for 实例中使用了 break 语句,break 语句用于跳出当前循环体:

continue语句,跳出本次循环,进行下一次循环;

range(初始值,终点值(取不到),步长)

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()

字符串,列表或元组对象都可用于创建迭代器:

#!/usr/bin/python3list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:print (x, end=" ")1 2 3 4

创建一个迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。

如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(), 它会在对象初始化的时候执行。

更多内容查阅:Python3 面向对象

__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。

__next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。

创建一个返回数字的迭代器,初始值为 1,逐步递增 1:

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。

类对象支持两种操作:属性引用和实例化。

属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name

类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

#!/usr/bin/python3class MyClass:"""一个简单的类实例"""i = 12345def f(self):return 'hello world'# 实例化类
x = MyClass()# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i)
print("MyClass 类的方法 f 输出为:", x.f())MyClass 类的属性 i 为: 12345
MyClass 类的方法 f 输出为: hello world

类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:

当然, __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上。例如:

#!/usr/bin/python3class Complex:def __init__(self, realpart, imagpart):self.r = realpartself.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 输出结果:3.0 -4.5

self代表类的实例,而非类

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

class Test:def prt(self):print(self)print(self.__class__)t = Test()
t.prt()#输出
<__main__.Test object at 0x0000028E52F59B00>
<class '__main__.Test'>

类的方法

在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。后续再使用def关键字时,就可以使用_init_中的self,但你不可以在已经定义的self外引用参数。更近一步,如果想要新加self参数,可以用类的继承!

实例(Python 3.0+)
#!/usr/bin/python3#类定义
class people:#定义基本属性name = ''age = 0#定义私有属性,私有属性在类外部无法直接进行访问__weight = 0#定义构造方法def __init__(self,n,a,w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 说: 我 %d 岁。" %(self.name,self.age))# 实例化类
p = people('runoob',10,30)
p.speak()#输出
runoob 说: 我 10 岁。

继承

继承Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。

#!/usr/bin/python3#类定义
class people:#定义基本属性name = ''age = 0#定义私有属性,私有属性在类外部无法直接进行访问__weight = 0#定义构造方法def __init__(self,n,a,w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 说: 我 %d 岁。" %(self.name,self.age))#单继承示例
class student(people):grade = ''def __init__(self,n,a,w,g):#调用父类的构函people.__init__(self,n,a,w)self.grade = g#覆写父类的方法def speak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))s = student('ken',10,60,3)
s.speak()
执行以上程序输出结果为:ken 说: 我 10 岁了,我在读 3 年级

更多关于类的说明,点击直达

总结:

#!/usr/bin/python3class MyClass:"""一个简单的类实例"""i = 12345def f(self):return 'hello world'# 实例化类
x = MyClass()# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i)
print("MyClass 类的方法 f 输出为:", x.f())MyClass 类的属性 i 为: 12345
MyClass 类的方法 f 输出为: hello world-------------------------------------------------------------------
类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,
#!/usr/bin/python3class Complex:def __init__(self, realpart, imagpart):self.r = realpartself.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 输出结果:3.0 -4.5----------------------------------
#单继承示例
class student(MyClass):grade = ''def __init__(self,n,a,w,g):#调用父类的构函MyClass.__init__(self,n,a,w)self.grade = g#覆写父类的方法def speak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))s = student('ken',10,60,3)
s.speak()
执行以上程序输出结果为:ken 说: 我 10 岁了,我在读 3 年级

函数

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
#!/usr/bin/python3# 计算面积函数
def area(width, height):return width * heightdef print_welcome(name):print("Welcome", name)print_welcome("Runoob")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))
以上实例输出结果:Welcome Runoob
width = 4  height = 5  area = 20

匿名函数

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
#!/usr/bin/python3# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))
以上实例输出结果:相加后的值为 :  30
相加后的值为 :  40

return语句

return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:

#!/usr/bin/python3# 可写函数说明
def sum( arg1, arg2 ):# 返回2个参数的和."total = arg1 + arg2print ("函数内 : ", total)return total# 调用sum函数
total = sum( 10, 20 )
print ("函数外 : ", total)
以上实例输出结果:函数内 :  30
函数外 :  30

变量作用域

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:

  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内置作用域(内置函数所在模块的范围)

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

g_count = 0  # 全局作用域
def outer():o_count = 1  # 闭包函数外的函数中def inner():i_count = 2  # 局部作用域

调用函数使用的是函数内部的局部变量,未调用函数,使用的是全局变量!

#!/usr/bin/python3total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):#返回2个参数的和."total = arg1 + arg2 # total在这里是局部变量.print ("函数内是局部变量 : ", total)return total#调用sum函数
print ("函数外是全局变量 : ", total)
sum( 10, 20 )输出
函数外是全局变量 :  0
函数内是局部变量 :  30

更多关于函数内容,点击

数据结构

数据结构是编程的基础,必须熟练掌握!

    特征 常见用法
不可变数据 数字=123 用于计算,没有索引;注意优先级(**》*/》not》and》or) >>> 17 % 3 # 取余 
2
字符串='' Python 字符串不能被改变,可以添加索引
常用用法:+字符串,*2复制2遍

a='string'

a[0]='c' #非法

print(a[0]) #合法

print (a * 2)      # 输出字符串两次
print (a + "TEST") # 连接字符串

元组=() 元组(tuple)与列表类似,不同之处在于元组的元素不能修改。 tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
可变数据 列表=[] 可以被索引,可以更改(不同于字符串),列表中元素的类型可以不相同,+,*依旧有效;

>>>a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9 #通过索引改列表

>>>del a[2] #删除列表元素

字典={} 字典是无序的对象集合,不能通过索引,但可以通过键找值(键唯一);构造字典方法很多;

b={'adf':'www','eee':123}
#print (b[0]) #错误!字典是无序的,只能通过键来引用。
print (b['adf'])#合法

a={} #构造空字典

集合={} 集合区分其它数据类型很大一个特点就是:集合可以进行交集,差集,补集的运算。创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)         #a是去除重复值

{'b', 'a', 'c', 'r', 'd'}#用{}拆分后表示
print(a - b)     # a 和 b 的差集

数据类型转换 list()

list() 方法用于将元组,字符串,字典,集合转换为列表

其中,字符串转换成列表,是将字符串中的每个字符转换成列表的一个元素。

aTuple = (123, 'Google')
list1 = list(aTuple) #原组转换列表
print ("列表元素 : ", list1)

列表元素 :  [123, 'Google']

tuple() tuple()将列表,字符串,字典,集合转换为元组;字符串都被单一拆分开来了;

list1= ['Google', 'Taobao']
b=tuple(list1)
print (b)

('Google', 'Taobao')

pandas DataFrame DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。

可由列表,字典创建

import pandas as pd
from pandas import Series, DataFrame
data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df1= DataFrame(data)
df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])
pandas series Series 是个定长的字典序列。Series有两个基本属性:index 和 values。
import pandas as pd
from pandas import Series, DataFrame
x1 = Series([1,2,3,4])
x2 = Series(data=[1,2,3,4], index=['a', 'b', 'c', 'd'])
numpy ndarray list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中,方便遍历;此外,numpy矩阵运算采用多线程方式,可以提升计算效率。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])a是一维数组,b是二维数组!

python编程-迭代器(类,方法,继承),函数,数据结构,相关推荐

  1. python一个函数调用另一个函数中的变量_在Python 中同一个类两个函数间变量的调用方法...

    在Python 中同一个类两个函数间变量的调用方法 更新时间:2019年01月31日 15:44:54 作者:wxy_summer 今天小编就为大家分享一篇在Python 中同一个类两个函数间变量的调 ...

  2. C++ Primer 学习笔记_72_面向对象编程 --句柄类与继承[续]

    面向对象编程 --句柄类与继承[续] 三.句柄的使用 使用Sales_item对象能够更easy地编写书店应用程序.代码将不必管理Item_base对象的指针,但仍然能够获得通过Sales_item对 ...

  3. Python编程核心内容 ---- Function(函数)

    什么"大事"呢?下面将要介绍Python编程的核心内容之一--函数. 对于Python编程,函数的重要性不言而喻.重要的事情讲三遍:函数实在是太重要,太关键了. 引入函数 之前,我 ...

  4. Python编程基础:实验5——函数定义与调用

    Python编程基础:实验5--函数定义与调用 文章目录 Python编程基础:实验5--函数定义与调用 一.前言 二.我的环境 三.实验目的与要求 四.实验任务 1.程序填空 2.程序编程 五.最后 ...

  5. linux下spark的python编辑_Linux下搭建Spark 的 Python 编程环境的方法

    Spark编程环境 Spark 可以独立安装使用,也可以和Hadoop 一起安装使用.在安装 Spark 之前,首先确保你的电脑上已经安装了 Java 8 或者更高的版本. Spark 安装 访问 S ...

  6. python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...

  7. Python 进阶_OOP 面向对象编程_类和继承

    目录 目录 类 最简单的类 类方法 构造器 __init__ 创建一个类 实例化一个对象 调用实例的方法和属性 创建子类 使用 super 来调用父类的构造器 实例化子类对象 调用子类的属性和方法 类 ...

  8. python面向对象-4类的继承与方法的重载

    1.类的继承与方法的重载 上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法. 1 class Washer: 2 company='ZBL' 3 def ...

  9. 初学者python笔记(类的继承与多态---详解)

    文章目录 一.类的组合与继承的区别 二.类的继承 1.继承的功能分析 2.类的继承之派生.接口继承 3.用接口模块abc来实现接口继承 4.使用接口继承的好处 5.类的继承顺序 6.在子类中调用父类的 ...

最新文章

  1. 一招一式攻克linux(五)
  2. 腾讯发布95页重磅报告:全面预测中国互联网未来5年趋势
  3. Gym - 101972B Arabella Collegiate Programming Contest (2018) B. Updating the Tree 树DFS
  4. 并发编程之Synchronized原理
  5. linux配置dhcp中继服务
  6. 信号的采样与插值重建(包含matlab)
  7. hazelcast入门教程_Hazelcast入门指南第4部分
  8. java学习(64):类访问私有内部内部类方法
  9. FTP 时代已逝:Firefox、Chrome 等多个浏览器均已弃用!
  10. 线上线下同步开启安全盛宴 BCS 2020将于8月7日正式开幕
  11. 测试Live Write的发布功能
  12. 标准的软件开发是怎样的?
  13. Unity 动态生成mesh圆圈
  14. echarts怎么保存图片到剪切板上_Mac上微信、QQ的聊天图片和记录保存在哪?如何清理或导出?...
  15. 基于STM32F103C6T6HAL库控制SG90舵机
  16. 数字IC设计工程师笔试面试经典100题
  17. C#使用System.Speech制作语音提示功能
  18. 宇视摄像头尾线防水处理
  19. HTML:使用单选框、复选框,让用户选择
  20. Excel表格汇总计算计算同一人数据

热门文章

  1. 【解题报告】Leecode. 575. 分糖果——Leecode每日一题系列
  2. 判断一个数是否是素数,为什么只要除到根号那个数就够了
  3. 通俗易懂,快速幂基本思想
  4. docker-Consul的概述及consul集群环境的搭建
  5. OpenStack 的部署T版(一)——基础环境配置
  6. Rsync下行同步+inotify实时同步介绍和部署
  7. smarty去除html标签,Smarty与脚本中的html标签爆裂
  8. 网络的分层思想和数据封装与解封装概论
  9. jsp获取多个checkbox的值
  10. python的进阶之路_Python 从入门到进阶之路(三)