变量的定义和赋值
Python 与 JavaScript 一样,是动态类型语言,在赋值之前不需要声明变量的类型。
任务
定义三个变量:name(字符串)、age(整数)和is_student(布尔值),为这些变量分配适当的值并将它们打印到控制台。
JavaScript 实现
let name = "John";
let age = 25;
let isStudent = true;
console.log(name);
console.log(age);
console.log(isStudent);
Python 实现
name = "John"
age = 25
is_student = True
print(name)
print(age)
print(is_student)
代码解读
- Python 和 JavaScript 都使用单等号
=进行赋值。 - Python 不需要在语句的末尾使用分号,而 JavaScript 需要。
:::tip JavaScript 代码到底加不加分号? 分号对 JavaScript 来说是必要的,而对开发者来说却并不是必须的,因为解释器会自动补全分号 :::
差异速览
| 特性 | JavaScript | Python |
|---|---|---|
| 声明变量关键字 | var let | - |
| 声明变量不赋值 | var variableName; | - |
| 变量赋值 | variableName = value; | variableName = value |
| 常量声明 | const constantName = value; | CONSTANT_NAME = value |
:::tip Python 中没有常量的概念,Python 默认约定使用全部大写字母和下划线组合进行命名的变量为不可变的变量,开发者应该遵守这种约定,不要对它们的值进行修改 :::
相关资源
变量命名规则
为了防止写出 “JavaScript 味” 的 Python 代码,我们需要了解 Python 中的变量命名规则和约定。
命名约定
以下是JavaScript 和 Python 都需要遵循的命名规则:
- 变量名必须以字母或下划线(_)开头。
- 变量名只能包含字母、数字和下划线(_)。
- 避免使用保留关键字或内置函数名作为变量名。
命名规则只是在语法上让代码能运行起来,而遵循适当的命名约定是衡量代码可读性的重要标准。 在 Python 中,除了 变量名和函数名单词之间应使用下划线(_)分隔,使用小写字母 之外,其它的命名约定与 JavaScript 一样。
以下是它们之间的异同:
| 名称 | JavaScript | Python |
|---|---|---|
| 变量名 | userName | user_name |
| 类名 | UserPermission | UserPermission |
| 函数名 | getById | get_by_id |
| 常量名 | DEFAULT_LOGO_URL | DEFAULT_LOGO_URL |
不能使用的变量名
在 JavaScript 中,我们常常使用 str 变量名表示一个字符串。
const str = '123'
而在 Python 中,str 是一个内置函数,用于将值转换为字符串类型。在 Python 中,如果使用 str 作为变量名将会覆盖该内置函数,在复杂的系统中,这可能导致无法预料的执行结果。
阅读如下 Python 代码:
print(str(123)) # 将整数 123 转换为字符串
str = '123' # 覆盖内置函数 str
print(str(123)) # TypeError: 'str' object is not callable
该代码在执行过程中会抛出异常,因为 str 现在是字符串类型。
Python 中的内置函数还有很多,下表中列出的是一些常容易让 JavaScript 工程师当做 Python 变量名的内置函数名称,在编写 Python 代码时应避免使用它们。
| 内置函数 | 作用 |
|---|---|
| str | 将对象转换为字符串 |
| dict | 创建字典对象 |
| list | 创建列表对象 |
| set | 创建集合对象 |
| tuple | 创建元组对象 |
| int | 将对象转换为整数 |
| float | 将对象转换为浮点数 |
| bool | 将对象转换为布尔值 |
| len | 返回对象的长度 |
| 将对象打印到控制台 |
你可以 点击这里 查看 Python 中的全部内置函数。
:::tip 如果你使用 PyCharm IDE 编写 Python 代码,当使用了内置函数作为变量名时,变量名下方会有下划线警告。 :::
相关资源
本书的内容完全免费,开源地址:github.com/luckrnx09/p…