迭代器是一种对象,该对象包含值的可计数数字。
迭代器是可迭代的对象,这意味着您可以遍历所有值。
从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 iter() 和 next()。
列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器,您可以从中获取迭代器(Iterator)。
所有这些对象都有用于获取迭代器的 iter() 方法:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
我们也可以使用 for 循环遍历可迭代对象
提示:for 循环实际上创建了一个迭代器对象,并为每个循环执行 next() 方法。
要把对象/类创建为迭代器,必须为对象实现 iter() 和 next() 方法。
正如您在 Python 类/对象 一章中学到的,所有类都有名为 init() 的函数,它允许您在创建对象时进行一些初始化。
iter() 方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。
next() 方法也允许您执行操作,并且必须返回序列中的下一个项目。
如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。
为了防止迭代永远进行,我们可以使用 StopIteration 语句。
在 next() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误
在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。
def myfunc():
x = 100
print(x)
myfunc()
在 Python 代码主体中创建的变量是全局变量,属于全局作用域。
全局变量在任何范围(全局和局部)中可用。
如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部)
如果您需要创建一个全局变量,但被卡在本地作用域内,则可以使用 global 关键字。
global 关键字使变量成为全局变量。
如需创建模块,只需将所需代码保存在文件扩展名为 .py 的文件中
现在,我们就可以用 import 语句来使用我们刚刚创建的模块
导入名为 mymodule 的模块,并调用 greeting 函数:
import mymodule
mymodule.greeting("Bill")
注释:如果使用模块中的函数时,请使用以下语法:
module_name.function_name
模块可以包含已经描述的函数,但也可以包含各种类型的变量(数组、字典、对象等)
您可以随意对模块文件命名,但是文件扩展名必须是 .py
您可以在导入模块时使用 as 关键字创建别名
import mymodule as mx
a = mx.person1["age"]
print(a)
有一个内置函数可以列出模块中的所有函数名(或变量名)
import platform
x = dir(platform)
print(x)
注释:dir() 函数可用于所有模块,也可用于您自己创建的模块。
您可以使用 from 关键字选择仅从模块导入部件。
例如名为 mymodule 的模块拥有一个函数和一个字典:
def greeting(name):
print("Hello, " + name)
person1 = {
"name": "Bill",
"age": 63,
"country": "USA"
}
仅从模块导入 person1 字典:
from mymodule import person1
print (person1["age"])
提示:在使用 from 关键字导入时,请勿在引用模块中的元素时使用模块名称。示例:person1[“age”],而不是 mymodule.person1[“age”]。
Python 中的日期不是其自身的数据类型,但是我们可以导入名为 datetime 的模块,把日期视作日期对象进行处理。
导入 datetime 模块并显示当前日期:
import datetime
x = datetime.datetime.now()
print(x)
如果我们执行上面的代码,结果将是:
2019-08-14 12:52:55.817273
日期包含年、月、日、小时、分钟、秒和微秒。
如需创建日期,我们可以使用 datetime 模块的 datetime() 类(构造函数)。
datetime() 类需要三个参数来创建日期:年、月、日。
创建日期对象:
import datetime
x = datetime.datetime(2020, 5, 17)
print(x)
datetime() 类还接受时间和时区(小时、分钟、秒、微秒、tzone)的参数,不过它们是可选的,默认值为 0,(时区默认为 None)。
datetime 对象拥有把日期对象格式化为可读字符串的方法。
该方法称为 strftime(),并使用一个 format 参数来指定返回字符串的格式
显示月份的名称:
import datetime
x = datetime.datetime(2019, 10, 1)
print(x.strftime("%B"))
JavaScript 注释用于解释 JavaScript 代码,增强其可读性。
JavaScript 注释也可以用于在测试替代代码时阻止执行。
单行注释以 // 开头。
任何位于 // 与行末之间的文本都会被 JavaScript 忽略(不会执行)。
多行注释以 /* 开头,以 */ 结尾。
任何位于 /* 和 */ 之间的文本都会被 JavaScript 忽略。
JavaScript 变量是存储数据值的容器。
所有 JavaScript 变量必须以唯一的名称的标识。
这些唯一的名称称为标识符。
标识符可以是短名称(比如 x 和 y),或者更具描述性的名称(age、sum、totalVolume)。
构造变量名称(唯一标识符)的通用规则是:
名称可包含字母、数字、下划线和美元符号
名称必须以字母开头
名称也可以 $ 和 _ 开头(但是在本教程中我们不会这么做)
名称对大小写敏感(y 和 Y 是不同的变量)
保留字(比如 JavaScript 的关键词)无法用作变量名称
提示:JavaScript 标识符对大小写敏感
在 JavaScript 中,等号(=)是赋值运算符,而不是“等于”运算符。
在 JavaScript 中创建变量被称为“声明”变量。
您可以通过 var 关键词来声明 JavaScript 变量:
var carName;
声明之后,变量是没有值的。(技术上,它的值是 undefined。)
在计算机程序中,被声明的变量经常是不带值的。值可以是需被计算的内容,或是之后被提供的数据,比如数据输入。
不带有值的变量,它的值将是 undefined。
变量 carName 在这条语句执行后的值是 undefined
如果再次声明某个 JavaScript 变量,将不会丢它的值。
<script>
var carName = "porsche";
var carName;
document.getElementById("demo").innerHTML = carName;
</script>