对于想要学习C++、JavaScript、R或任何其他编程语言的人来说,Python是一个不错的选择。本文将跳过那些重复的基础概念,直接展示Python中这些概念的实现,让能够立即开始编码。
这里不是简单的“Hello World”。要求用户输入他的名字,并个性化地问候他。
name = input("请输入名字:")
print(f"好,{name}!")
在Python中,input()
函数用于在屏幕上提示输入并返回键入的内容,而print()
函数用于在屏幕上打印内容。不需要声明“main”函数或包含任何库。习惯于Python编程的简洁性。
安装Python非常简单。如果使用的是Linux,Python应该已经包含在系统中。只需尝试运行python --version
来检查它以及版本。如果Python尚未安装,请访问下载适合操作系统的Python版本。
要运行Python脚本,只需输入python scriptname.py
。可以使用任何文本编辑器编辑脚本,但如果想要更舒适的体验,推荐使用免费的。确保点击正确的链接(在右侧)下载社区版。
另一个学习Python的好方法是使用。可以将其视为一个增强版的交互式解析器。虽然它需要一些时间来设置和习惯,但在这里不会涵盖它。如果希望写一篇关于Jupyter Notebook的文章,请留言。
现在准备好开始学习了。将展示一个(无意义的)代码片段,展示Python的基本元素。如果想知道“该如何再次定义一个函数?”,可以将其作为参考。将在代码片段之后详细介绍每个部分。
# 这是一个注释
# 一些变量
num_var = 1
str_var = "好"
list_var = [1, "2", 3.5, 3+5]
arr_bool = not True and 3 != 4
# 控制结构
if num_var == 1:
print("num_var = 1")
elif num_var != 2 and not num_var > 7:
print("num_var 不是 2")
else:
num_var = 0
# 循环 - 打印 list_var 的元素三次
for i in range(3):
for j in list_var:
print(j)
while num_var < 2:
num_var += 1
# 函数定义
def root(x, y=2):
return x**(1 / y)
print(root(2)) # 1.414...
print(root(8,3)) # 2.0
# 数组操作
my_list = [1, 2, 3, 4, 5]
print(my_list[0]) # 1
print(my_list[2:4]) # [3,4]
让从注释开始。只需使用#
。#
之后的所有内容都被视为注释。
接下来是变量。不需要以任何方式声明它们,Python会自动决定使用哪种类型。代码片段显示了int/float、数组(在Python中称为list)和布尔值。为了完整性,还有更高级的类型,如复数、集合和字典,这里不会涵盖。
变量上典型的操作符包括基本的+,-,/,*
和更高级的%
(模除)、//
(整数除法)、**
(幂函数)。布尔函数使用“and”、“or”、“not”等词。逻辑比较是==, !=, <, >, <= 和 >=
。
接下来是一个简单的条件语句if
。会注意到没有括号,这是一个非常不寻常的景象。Python如何知道哪部分属于什么?它通过使用缩进来代替括号。条件满足后执行的代码在“:”之后开始,在缩进块之后结束。因此,保持适当的缩进级别非常重要!再次强调:缩进代替了括号。
if
可以有elif
(else if)和else
部分。
循环:可以循环遍历所谓的“可迭代对象”。不要纠结于技术术语,基本上,可以使用for i in range(x)
通过执行x次来执行一个语句。请注意,i将从“0”开始,以x-1结束。
不过,可以使用列表代替。Python在这里让生活变得非常简单。代码片段显示了一个循环,它打印列表的项三次。
while循环非常直观。
让继续函数声明:
def root(x, y=2):
定义了一个带有两个参数x和y(默认值为2)的函数,并返回x的y次根。可以通过简单地使用root()
来调用函数。
基础知识的最后一部分展示了列表的使用。如果想访问列表的单个元素,请使用方括号和索引号。请记住从0开始计数。也可以访问列表的一部分。这有点违反直觉,因为listname[a:b]
返回从第a个元素开始到第b个元素之前的元素列表。这经常会导致一些混淆和难以发现的错误。
以上就是Python基础知识的全部内容——现在可以编写第一个脚本,并稍微尝试使用Python。请继续关注面向对象编程和一些学习建议。
如果在面向对象编程(OOP)领域,那么是的,Python也可以做到这一点。这里再次是一个代码片段:
# 类定义
class Pet:
# 类变量
sound = "发出一些声音"
# 类构造函数
def __init__(self, name, animal):
self.name = name + " the " + animal
# 类方法
def make_noise(self):
return self.name + " " + self.sound
# 创建一个对象
peter = Pet('Peter', 'turtle')
print(peter.name) # 打印 "Peter the turtle"
print(peter.make_noise()) # "Peter the turtle 发出一些声音"
# 子类
class Dog(Pet):
sound = "barks"
# 调用超类
def __init__(self, name):
super().__init__(name, "dog")
spike = Dog("Spike")
print(spike.make_noise()) # Spike the dog barks
在这里,定义了一个名为Pet的类,创建了一个从Pet继承的子类Dog,并展示了一些类方法和变量。
让从class Pet:
开始。这与之前看到的函数定义语法相同。如果使用参数class Dog(Pet):
,这个类被定义为子类,声明其父类作为参数。
任何缩进的代码都被视为属于类的代码(记住,缩进代替了括号)。所以“sound”是一个只在类中可用的变量,即一个属性。
暂时跳过构造函数__init__
,从类方法make_noise(self)
开始。可能想知道“self”是什么意思。它引用调用此方法的对象。所以self.sound
和self.name
指的是属性的sound和name。
方法__init__
是构造函数。假设熟悉基本的OOP,所以在这里只想提一下,这个方法在创建对象时被调用。使用self.name
和name可能有点令人困惑,但请记住self.name
指的是与对象一起存储的属性,而name指的是调用方法时传递的参数。
可以通过object = class(parameters)
创建一个对象,在这种情况下peter = Pet('Peter', 'turtle')
。这调用了构造函数并返回了新对象。
要访问属性,请调用object.property
,如peter.name
。请注意,与C++等语言不同,Python中没有区分私有和公共属性。
调用方法类似于object.method(parameters)
,参见peter.make_noise()
。
现在让创建一个子类:class Dog(Pet)
继承了父类的属性和方法。当然可以覆盖任何属性和方法。要调用超类方法,使用“super()”,如:super().__init__(name, "dog")
。
这是Python面向对象编程功能的简短介绍,让开始使用。当然,还有更多功能,如重载、静态方法、多重继承等,但这至少是另一篇文章的内容。