1.Python是一种什么样的语言
Python和js一样是一种高级、解释型、交互式和面向对象的脚本语言。所以他们在很多地方都是互通的。
- 高级语言:Python提供了相对简单的语法和强大的抽象能力,使得程序员可以更容易地编写和理解代码,而不需要过多关注底层实现细节。
- 解释型语言:Python代码在运行时通过解释器逐行解释执行,而不是像C或C++这样的编译型语言那样需要预先编译成机器码。这使得Python在开发过程中更加灵活和便捷,但也可能导致运行速度相对较慢。
- 交互式语言:Python支持交互式编程模式,允许程序员在命令行或交互式环境中直接输入并执行代码,这对于测试和调试代码非常有用。
- 面向对象的语言:Python支持面向对象编程(OOP)范式,包括类、对象、继承、封装和多态等概念。这使得Python代码更加模块化和可重用。
2.注释
单行注释
python中使用#开头表示注释
# 我是一行注释
在js中通过//进行单行注释
// 我是一行注释
多行注释
虽然 Python 没有专门用于多行注释的语法,但你可以使用多个单行注释或使用三重引号(''' 或 """)来模拟多行注释。三重引号通常用于字符串的多行表示,但也常被用作多行注释,特别是当注释需要跨越多行时。需要注意的是,三重引号实际上是创建了一个字符串,如果这个字符串没有被赋值给任何变量,它就会被忽略(所以不用担心影响性能),因此可以用作多行注释。
'''
这是一个多行注释
可以跨越多行
'''
print("Hello, World!")
"""
这也是一个多行注释
使用双引号
"""
print("Hello again!")
在js中通过/**以及**/进行多行注释
/**
这是一个
多行
注释
**/
3.交互模式
命令行模式
比较常用的模式,创建.py文件以后,代码逐行执行。
js、java、c等高级语言都具备这样的模式。
交互模式
不同于java、c等需要预编译的语言,python和javascript还可以有交互模式
读一行执行一行,不需要创建文件,可以直接在控制台/终端等环境下输入代码,输入的代码会直接执行。
在终端直接输入python3就可以进入交互模式。
js也可以在浏览器的控制台当中进入交互模式。
4.变量/常量与数据类型
python中,声明一个变量只需要给一个变量赋值即可,不需要像java、c、ts那样声明变量的类型。和js一样,给变量赋值以后,会根据当前变量的值,直接确定变量的类型。
下面是python中常见的数据类型。
数字类型
# 整数 int
a = 10
# 浮点数 float
b = 3.14
# 复数
c = 1 + 2j
# 布尔值 bool
d = True
字符串类型
# 字符串 string
e = "Hello, World!"
# 也可以使用单引号
f = 'Python is awesome!'
# 多行字符串
g = """This is a
multi-line string."""
容器数据类型
# 列表 list
h = [1, 2, 3, 4, 5]
# 元组 tuple
i = (1, 2, 3)
# 字典 dict object
j = {"name": "Alice", "age": 25}
# 集合 set
k = {1, 2, 3, 4, 5}
特殊数据类型
# NoneType类型 null
l = None
类
# 定义一个简单的类
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 创建类的实例
m = Person("Bob", 30)
怎么检查一个变量的数据类型
python中可以通过type函数获取到变量的数据类型。通过下面的例子,其实可以看出来,python中的各个数据类型也是对应类的实例。
type(x) # <class 'int'>
type(arr) # <class 'list'>
常量
而python当中并没有关于常量的定义方式。一般通过将变量名定为全部大写的方式来进行约定常量。
STUDENT_NAME = 'ljm'
5.引用类型的设计
引用类型
引用类型,即变量不会直接存储数据值,而是存储对数据的引用。访问变量时,实际上通过访问引用而得到数据的值。
这也就意味着,当引用类型之间互相赋值时,是赋予对方引用,修改其中一个变量时,两者都会发生改变。
# 创建一个列表对象
my_list = [1, 2, 3]
# 将my_list的引用赋值给another_list
another_list = my_list
# 修改another_list引用的对象
another_list.append(4)
# 输出my_list,会发现它也发生了变化
print(my_list) # 输出: [1, 2, 3, 4]
在引用类型的设计上,python和js有较大的差异。
js的类型设计
首先js将数据类型划分为了基本类型(如number、string、boolean、null)与引用类型(object、Function等)。
基本类型直接存储数据值,引用类型存储引用。
这也就意味着,js中的基本类型,不必当心变量互相赋值时,产生复杂的互相引用的现象。
python的类型设计
而Python中所有的数据类型都被设计成了引用类型。但整型变量等数据量较小的类型,被设计成了不可变类型。列表、字典等数据量通常比较大的类型,被设计为了可变类型。
在Python中,整型变量(以及其他不可变类型,如浮点数、字符串、元组等)也是引用类型的。这意味着,当你创建一个整型变量时,Python会在内存中为该整数分配空间,并返回一个引用或标识符给这个整数对象。变量实际上就是这个引用的名称。
然而,与可变类型(如列表、字典等)不同的是,不可变类型的对象一旦创建就不能被修改。当你尝试对一个不可变类型的变量进行操作时,如果这个操作会改变对象的内容,Python实际上会创建一个新的对象,并将变量的引用更新为这个新对象。
# 创建一个整型变量
x = 5
# 将x的引用赋值给y
y = x
# x和y现在引用的是同一个整数对象
print(x is y) # 输出: True
# 修改x的值(实际上是在创建一个新的整数对象并更新x的引用)
x = 10
# x和y现在引用的是不同的整数对象
print(x is y) # 输出: False
print(x) # 输出: 10
print(y) # 输出: 5
总结
引用类型的存在对编程具有重要的意义。引用类型的出现使得我们在处理大型数据集或者复杂对象的时候,通过访问引用来操作数据,而不是复制数据,可以显著提高内存的使用率。同时,也就使得数据共享得到了支持,这种特性非常管用。
当然,在数据量比较小的数据类型中(比如整型、浮点类型等),使用引用类型并不太方便,会影响编码效率。
js和python在这个问题上使用了不同的方案进行处理,但是得到了相同的效果。