【python】(1)输入输出,注释,变量和关键字

125 阅读7分钟

输入输出

在Python中,控制台输入和输出是编程的基础,允许用户与程序进行最简单的交互。

输入(Input)

使用 input() 函数从控制台接收用户输入。input() 函数可以接受一个字符串参数,作为提示信息显示给用户。

name = input("请输入你的名字: ") 
print("欢迎," + name)

输出(Print)

print() 函数用于在控制台输出信息。它可以输出字符串、数字,以及其他多种数据类型。print() 也可以直接进行简单运算后输出结果。

age = 25 
print("年龄:", age)  
# 输出变量 
print("明年你将是", age + 1, "岁。")  
# 在print中进行运算

实践示例

尝试运行以下代码以理解输入输出的操作:

price = input("请输入美元: ") 
int_price = int(price)  # 将输入的字符串转换为整数 
result = int_price * 6.9 
print("换算后的人民币为:", result)

在上述代码中,我们首先使用 input() 函数提示用户输入美元金额。然后,使用 int() 函数将输入的字符串转换为整数。最后,我们计算并打印出换算后的人民币金额。

注释

注释是一种对代码进行说明和解释的文本,它不参与代码的执行。注释的主要目的是使代码更易于理解,无论是对于编写代码的原作者还是其他阅读代码的人。Python提供了两种类型的注释:单行注释和多行注释。

单行注释

单行注释以井号(#)开头,其后是注释文本。Python解释器会忽略井号及其后的文本,直到行尾。单行注释通常用于简短说明代码的某个特定部分,例如变量的用途或某行代码的目的。

# 这是一个单行注释
x = 5  # 这里设置x的值为5

多行注释

多行注释可以用三个单引号(''')或三个双引号(""")包裹一段注释文本,用于编写跨越多行的注释。虽然Python没有专门的语法来定义多行注释,但多行字符串常被用作这个目的,特别是在定义函数、类、模块或文件的文档字符串(docstrings)时。

"""
这是一个多行注释的例子。
它可以跨越多行。
"""
def my_function():
    # 函数内的单行注释
    pass

文档字符串(Docstrings)

文档字符串(docstrings)是一种特殊类型的多行字符串,用于说明模块、函数、类或方法的目的和如何使用。文档字符串位于模块、函数或类的第一行,使用三个双引号。

def add(x, y):
    """这个函数用于计算两个数的和。
    
    参数:
    x - 第一个加数。
    y - 第二个加数。
    
    返回值:
    两个数的和。
    """
    return x + y

通过内置的help()函数、.__doc__属性或各种IDE的文档查看功能,可以轻松访问文档字符串,从而了解模块、函数、类或方法的详细说明。

print(add.__doc__) 
help(add)

变量

变量用于存储数据值。在Python中,变量无需声明类型,且可以随时更改变量的类型,这是因为Python是动态类型的语言。

定义和赋值

通过赋值操作(=)来创建变量,Python解释器会自动确定变量的类型。

x = 10  # x是一个整数
message = "Hello, Python!"  # message是一个字符串

命名规则

  • 变量名必须以字母或下划线_开头,不能以数字开头。
  • 变量名只能包含字母、数字和下划线。
  • 变量名是大小写敏感的,例如,myVarmyvar是两个不同的变量。
  • 避免使用Python内置函数和关键字作为变量名,例如不要使用liststr作为变量名。

变量的作用域

变量的作用域决定了在哪些部分你可以访问某个变量。Python中的变量作用域分为四种:

  1. 局部作用域(Local):在函数内部声明的变量属于局部作用域,只能在函数内部访问。
  2. 封闭作用域(Enclosing):对于嵌套函数,封闭作用域的变量可以在内层函数中访问,但不能在外层函数之外访问。
  3. 全局作用域(Global):在模块级别声明的变量属于全局作用域,可以在整个模块内任何地方访问。
  4. 内建作用域(Built-in):Python自带的内建变量名,如printlen等,属于内建作用域。

变量的声明周期

  1. 创建:变量的生命周期开始于其首次赋值。Python是动态类型语言,无需显式声明变量类型。变量类型由赋值时的数据类型决定。

  2. 更新和访问:在其生命周期内,变量的值可以被更新或访问。变量的作用域决定了变量可以被访问和更新的代码区域。

  3. 引用计数:Python使用引用计数机制来跟踪对象被引用的次数。当对象的引用计数降到0时,Python的垃圾收集器会自动回收这个对象所占用的内存空间。

  4. 销毁:当变量的生命周期结束时,例如:

    • 函数执行完毕,局部变量的作用域结束。
    • 程序结束,全局变量的生命周期结束。
    • 引用计数变为0,对象不再被需要。
def func():
    local_var = 5  # local_var在这里创建
    print(local_var)  # 在局部作用域内访问

# 全局变量
global_var = 10

def another_func():
    global global_var
    global_var += 1  # 在全局作用域内更新
    print(global_var)

func()
another_func()

# local_var现在不可访问,因为func()的执行已结束
# global_var在程序结束时生命周期结束

在这个示例中,local_varfunc()执行结束时生命周期结束,因为它是局部变量。而global_var作为全局变量,在整个程序执行过程中都是可访问的,直到程序结束。

关键字

这些保留字在Python语言中具有特定的意义,因此不能用作变量名、函数名或任何其他标识符名称。

下面是Python 3.10版本的保留字列表,以表格形式展示:

序号关键字描述
1False布尔值假
2None表示没有值
3True布尔值真
4and逻辑运算符"与"
5as用于创建别名
6assert用于调试时的条件测试
7async用于定义异步函数
8await用于异步操作中等待一个操作完成
9break用于循环中立即退出循环
10class用于定义类
11continue用于立即跳到循环的下一个迭代
12def用于定义函数
13del用于删除对象
14elif用于if语句中定义一个条件分支
15else用于iffor循环中定义一个替代执行块
16except用于捕获和处理异常
17finally用于try块中定义一个最终的执行块,无论是否有异常发生都会执行
18for用于循环
19from用于导入模块中的特定部分
20global用于声明全局变量
21if用于条件判断
22import用于导入模块
23in用于判断一个值是否为另一个值的成员
24is用于测试两个变量是否相同
25lambda用于创建匿名函数
26nonlocal用于声明非局部变量
27not逻辑运算符"非"
28or逻辑运算符"或"
29pass一个空操作,占位符
30raise用于触发异常
31return用于函数中返回值
32try用于开始一个异常处理块
33while用于循环
34with用于简化异常处理或者会话清理代码
35yield用于从函数中返回一个生成器

使用keyword.kwlist可以获取到当前Python解释器版本的完整保留字列表。

import keyword
keyword.kwlist