趣文网,分享全网好句子、好文章!

床长人工智能教程——简单语句

时间:2023-06-28 05:58:01

相关推荐

床长人工智能教程——简单语句

声明:本人只是分享一些床长的免费杂文而已,并非床长人工智能网校的收费文章。

一个简单的语句包含在单个逻辑行中。在用分号分隔的一行上可能会出现几个简单的语句。简单语句的语法为:

simple_stmt :: = expression_stmt

| assert_stmt

| assignment_stmt

| augmented_assignment_stmt

| annotated_assignment_stmt

| pass_stmt

| del_stmt

| return_stmt

| yield_stmt

| raise_stmt

| break_stmt

| continue_stmt

| import_stmt

| future_stmt

| global_stmt

|nonlocal_stmt

7.1。表达式语句

Expression语句(通常是交互式地)用于计算和写入值,或(通常)用于调用过程(一个不返回有意义结果的函数;在Python中,过程返回value None)。表达式语句的其他用法是允许的,有时是有用的。表达式语句的语法为:

expression_stmt :: = starred_expression

表达式语句评估表达式列表(可以是单个表达式)。

在交互模式下,如果值不是None,则使用内置repr()函数将其转换为字符串,并将所得的字符串本身写入一行的标准输出中(除非结果为None,否则过程调用不会导致任何输出。)

7.2。赋值语句

赋值语句用于将名称(重新)绑定到值并修改可变对象的属性或项目:

assignment_stmt :: =(target_list“ =”)+(starred_expression| yield_expression)

target_list :: = target(“,” target)* [“,”]

目标 :: = identifier

| “(” [ target_list]“)”

| “ [” [ target_list]“]”

| attributeref

| subscription

| slicing

| “ *”target

(见初选对于语法定义attributeref, 订阅,和切片。)

赋值语句评估表达式列表(请记住,它可以是单个表达式或逗号分隔的列表,后者产生一个元组),并将单个结果对象从左到右分配给每个目标列表。

递归定义取决于目标(列表)的形式。当目标是可变对象(属性引用,订阅或切片)的一部分时,可变对象必须最终执行分配并确定其有效性,如果分配是不可接受的,则可能引发异常。对象类型的定义给出了各种类型遵守的规则和引发的异常(请参见标准类型层次结构一节)。

递归定义将对象分配给目标列表(可选地用括号或方括号括起来)的方式如下。

如果目标列表是一个没有尾随逗号的单个目标(可以选择在括号中),则将对象分配给该目标。

否则:该对象必须是可迭代的,并且具有与目标列表中的目标相同数量的项目,并且将这些项目从左到右分配给相应的目标。

如果目标列表包含一个标有星号的目标,称为“加星标”目标:该对象必须是可迭代的,且其至少与目标列表中的目标数量一样多(减1)。可迭代对象的第一项从左到右分配给已加星标目标之前的目标。可迭代对象的最后一项分配给已加星标的目标。然后,将可迭代项中其余项目的列表分配给已加星标的目标(列表可以为空)。

将对象分配给单个目标的定义如下。

如果目标是标识符(名称):

如果该名称未出现在 当前代码块中的globalor nonlocal语句中:该名称将绑定到当前本地名称空间中的对象。

否则:名称分别绑定到全局命名空间或nonlocal分别确定的外部命名空间中的对象。

如果已经绑定,则名称为反弹。这可能导致先前绑定到该名称的对象的引用计数达到零,从而导致该对象被释放并调用其析构函数(如果有的话)。

如果目标是属性引用:评估引用中的主表达式。它应该产生一个具有可分配属性的对象;如果不是这种情况,TypeError则引发。然后要求该对象将分配的对象分配给给定的属性;如果无法执行分配,则会引发异常(通常,但不一定是 AttributeError)。

注意:如果对象是类实例,并且属性引用出现在赋值运算符的两侧,则右侧表达式a.x可以访问实例属性或(如果没有实例属性,则)类属性。a.x始终将左侧目标设置为实例属性,并在必要时创建它。因此,两次出现的a.x不一定表示相同的属性:如果右侧表达式引用的是类属性,则左侧创建一个新的实例属性作为分配的目标:

class Cls:

x = 3 # class variable

inst = Cls()

inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3

此描述不一定适用于描述符属性,例如使用创建的属性property()。

如果目标是预订:评估引用中的主表达式。它应该产生可变的序列对象(例如列表)或映射对象(例如字典)。接下来,评估下标表达式。

如果主要对象是可变序列对象(例如列表),则下标必须产生一个整数。如果为负,则将序列的长度添加到其中。结果值必须是小于序列长度的非负整数,并且要求序列将分配的对象分配给带有该索引的项目。如果索引超出范围,IndexError则会引发(分配给下标序列的操作无法将新项目添加到列表中)。

如果主要对象是映射对象(例如字典),则下标必须具有与映射的键类型兼容的类型,然后要求映射创建一个将下标映射到指定对象的键/基准对。这可以用相同的键值替换现有的键/值对,也可以插入新的键/值对(如果不存在具有相同值的键)。

对于用户定义的对象,__setitem__()使用适当的参数调用该方法。

如果目标是切片:评估引用中的主表达式。它应该产生一个可变的序列对象(例如列表)。分配的对象应该是相同类型的序列对象。接下来,在存在下限和上限表达式的情况下对其进行评估;默认值为零,序列的长度。边界的值应为整数。如果任一边界为负,则将序列的长度添加到其中。将结果边界裁剪为介于零和序列长度之间(包括端值)。最后,要求序列对象用指定序列的项目替换切片。切片的长度可以与分配序列的长度不同,从而在目标序列允许的情况下更改目标序列的长度。

CPython实现细节:在当前实现中,目标的语法与表达式的语法相同,并且无效的语法在代码生成阶段被拒绝,从而导致不太详细的错误消息。

虽然分配的定义意味着左手侧和右手侧之间的重叠是“同时”(例如互换两个变量),重叠内的分配到变量发生左到右,有时会导致在收集在混乱中。例如,以下程序打印:a, b = b, a[0, 2]

x = [0, 1]

i = 0

i, x[i] = 1, 2 # i is updated, then x[i] is updated

print(x)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(2)
  1. 深碍@2023-12-10 06:25深碍@[重庆市网友]45.112.191.45
    床长人工智能教程真的太棒了,让人对人工智能有了更深入的了解。
    顶9踩0
  2. * 冰小恋.L2023-09-18 18:11* 冰小恋.L[山西省网友]203.8.214.217
    这个教程真的很不错,讲解简单易懂,适合初学者入门。
    顶9踩0
相关阅读
人工智能和文本分析:遵循的最佳方法

人工智能和文本分析:遵循的最佳方法

从自动化重复性任务到提供可行的客户见解,人工智能可以帮助企业改善收入和用户体验

2023-06-28

谷歌人工智能可改变句子时态 语态属性

谷歌人工智能可改变句子时态 语态属性

这个系统可能有一天会用于复述、团队论断、机器翻译和会话系统

2023-05-18

床长人工智能教程pdf下载——文本自动生成研究进展与趋势

床长人工智能教程pdf下载——文本自动生成研究进展与趋势

尊重版权,支持原创!摘要我们期待未来有一天计算机能够像人类一样会写作,能够撰写出高质量的自然语言文本

2023-11-20

人工智能与自然语言处理概述:AI三大阶段 NLP关键应用领域

人工智能与自然语言处理概述:AI三大阶段 NLP关键应用领域

机器之心对文章进行了编译,原文链接附于文末

2023-11-06

人工智能与自然语言处理技术

人工智能与自然语言处理技术

但有时候人工智也能会出一些小故障,变得不那么智能,尤其在语言处理方面

2023-06-28