什么是?
python 将自己描述为一种“解释性、交互式、面向对象的编程语言”,还支持“面向对象编程之外的多种编程范式,例如过程式编程和函数式编程”。
为什么要创建python?
python 的诞生是为了将 modula-3 和 abc 编程语言的优势结合成一种独立的编程语言。 python 将整体语法和用于异常的语义归功于 modula-3 语言,但 abc 语言和代理 set 语言也有类似的灵感。
为什么选择python?
python 将自己描述为“一种高级通用编程语言,可以应用于许多不同类别的问题”。 python 涵盖了开发人员的多个关注点:
string processing | internet protocols | software engineering | operating system interfaces |
---|---|---|---|
regular expressions | http | unit testing | system calls |
file comparisons | ftp | logging | file systems |
unicode | smtp, xml-rfc, & more | profiling | tcp/ip sockets |
比较 python 和 javascript
首先,我们最好了解为什么有这么多编程语言可供开发人员使用。简单的答案是,虽然许多编程语言可以执行类似的过程,但有些语言能够更好地处理这些执行。根据 linsi tuttle 在 wgu(西部州长大学)网站上的文章:
立即学习“”;
每种编程语言都是针对特定应用而设计的,并且具有独特的优点和局限性。根据项目的不同,一种语言在速度效率、多功能性或可扩展性方面可能比另一种语言更适合。
考虑到这一点,让我们看看 estefania cassingena navone 在她比较 python 和 javascript 的文章中的观察结果:
python | javascript |
---|---|
it is widely used in scientific and specialized applications. | it is widely used for web development, user-facing functionalities, and servers. |
used in data science, artificial intelligence, machine learning, computer vision and image processing. | used in web development, especially for making interactive and dynamic content for web applications. |
it can be used for web development; python is typically used for back-end development. | it can be used to develop both the back-end and front-end of the application. |
来自 python 3 的示例
函数调用
我认为我们最好以简单的事情为基础。让我们从基础开始,如何使用 python 将消息记录到控制台?
print("hello world!");
这会向我们的控制台输出一个非常基本的内容,虽然现在可能没用,但在我们继续学习语言的同时,它肯定可以对故障排除很有用!
# output => "hello world!"
变量和数据类型
根据python,变量在使用之前不需要声明,也不需要声明类型。尤其重要的是要知道,在 python 中,每个变量都是一个对象。
一开始可能很难理解这一点,所以让我们来看看一些变量声明和赋值。
first_name = 'jolly' # string with single quotes last_name = "roger" # string with double quotes height = 6 # integer number age = 36.253256 # float number is_liar = true # boolean # concatenation example print(first_name + " " + last_name + " sails the high seas!") # interpolation example print("at %d years old he stands at %d feet tall!" %(age, height))
请注意,在上面的示例中,我们避免使用驼峰式命名法,而是使用蛇形命名法。这样做主要是因为python 的官方风格指南在许多示例中使用了snake_case。如果您对更多样式建议感兴趣,可以在此处查看文档。
现在让我们快速看一下我们的输出,因为我们在 print 语句的两种用法中所做的事情略有不同。这就是我们的输出:
# output => "jolly roger sails the high seas!" # output => "at 36 years old, he stands at 6 feet tall!"
+ 运算符期望提供给它的数据类型匹配。换句话说,如果 + 运算符带有数字,那么它将尝试计算这些数字。如果 + 运算符与字符串一起使用,那么它将尝试将两个项目连接成一个字符串。
在第一个示例中,我们本质上执行了字符串连接。这很棒,而且它会起作用,因为在这种情况下,+ 运算符用于相同数据类型(字符串)的项目。然而,在第二个示例中,这不起作用!
在第二个示例中,我们要完成字符串插值。为此,我们可以在字符串中创建占位符 (%s %d %f),然后我们可以按顺序将参数传递给这些占位符 %(‘cat’, 3, 4.56231)。
代码块和缩进
在 javascript 中,我们通常通过使用大括号 {…} 来指示代码块的开始,大括号包含一组要执行的代码。然而,python 处理这个概念的方式有点不同……这就是其他语言的良好习惯可以提供帮助的地方。
x = 1 if x == 1: print("x is 1.")
在这种情况下,python 使用 缩进 来了解代码块何时开始和结束。标准缩进要求标准 python 代码使用四个空格。如果我们在没有缩进的情况下编写此行,我们将收到错误 indentationerror: expected an indented block 。
条件语句和表达式
让我们尝试将代码块的新知识应用到变量和数据类型部分中的示例。在这种情况下,我们有一个未使用的布尔值,我们现在要实现它。
first_name = 'jolly' # string with single quotes last_name = "roger" # string with double quotes height = 6 # integer number age = 36.253256 # float number is_liar = true if is_liar: print("%s %s lied to you!" %(first_name, last_name)) else: print(first_name + " " + last_name + " sails the high seas!") print("at %d years old he stands at %d feet tall!" %(age, height))
现在我们已经创建了一个代码块,并且此代码块仅在表达式为真时执行。在此示例中 is_liar 指向 true 的值,因此我们的输出将是:
# output => "jolly roger lied to you!"
还需要注意的是,python 能够进行条件链接。 if 语句后可以跟一个或多个 elif 语句,也可以跟一个简单的 else 语句。
循环
在python中,有两种循环或迭代的方式:for循环和while循环。在这种情况下,我们可以从一个使用 range 函数的简单示例开始。
for item in range(1, 11): print(item)
在此示例中,range() 函数表示循环的开始和停止条件。这是因为 range() 函数返回一个列表数据结构(在 javascript 中,您会将此结构称为数组)。如果我们继续了解这些知识,我们可以重新构建我们如何形象化这个问题:
for item in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: print(item)
- 函数 range(1, 11) 返回一个列表。
- 列表指向 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。
- 对于该列表中的每个项目,我们尝试 print() 它。
考虑控制流语句也很重要,它可以用来改变代码的评估和执行顺序。两个常见的语句是 continue 和 break 语句。让我们将其中之一集成到我们的循环中。
for item in range(1, 11): if item % 2 == 0: # if the item is even continue # continue to next iteration else: print(item) # else print the item
在这种情况下,我们使用 continue 语句继续下一次迭代,但前提是当前项是偶数。否则,我们会点击 else 块并打印该数字! continue 语句和break 语句有时是可选的。如果您担心无限循环,请考虑实现这些语句。关于这一点,让我们看一下 while 循环!
count = 0 while true: print(count) count += 1 if count >= 5: break
在这种情况下,我们技术上声明了一个可以无限迭代的循环。然而,在这种情况下,我们适当地包含了一个基本案例。每当count变量大于或等于5时,我们通过break语句退出整个循环。
如果我们在这个例子中没有break语句,我们将创建一个无限循环。我们可以重组或以其他方式重新设计我们的代码,这样就不需要break语句了。如果我们想完成同样的事情,我们可以像这样重新设计我们的代码:
count = 0 while (count <p>最终我们取得了相同的结果,我们只是不得不重新思考我们的方法。 python 提供了多种解决问题的方法,因此通常可以通过多种不同的方式获得相同的结果。</p> <hr><h4> 功能 </h4> <p>啊,可重用的代码,我亲爱的。 python 将函数描述为“一种将代码划分为有用块的便捷方法,使我们能够对代码进行排序、使其更具可读性、重用它并节省更多时间”。考虑到这一点,让我们开始讨论如何制作一些可重用的代码!</p> <pre class="brush:php;toolbar:false"> def describe_me(name = none, age = none, hobbies = none): # code for the function would be here!
在上面的示例中,我们使用 def 关键字来指示我们正在定义一个新函数。该函数将被称为describe_me,它可以接受三个参数:
- 字符串
- 数字(浮点数或整数)
- 兴趣爱好列表
请注意,当我们定义这三个参数时,我们还为它们分配了 none 值。我们实际上在这里所做的是将默认值设置为 none,这样如果没有提供参数,那么我们的代码仍然会尝试执行。让我们在下面的示例中继续扩展这个函数。
def describe_me(name = none, age = none, hobbies = none): if (name and age): print('my name is %s and i am %d years old.' %(name, age)) elif (name): print('my name is %s.' %(name))
太好了,现在我们已经建立了两个条件表达式来查看我们正在处理哪些数据。我们的第一个条件检查是否为名称参数和年龄参数提供了参数;如果它解析为 true,则一条消息将打印到控制台。如果提供了姓名参数,但没有提供年龄,则会打印一条替代消息。
到目前为止,我们所做的一切都是有效的,但我们仍然没有解决爱好参数的使用方式。让我们看看如果我们添加一个循环来迭代爱好集合会是什么样子。
def describe_me(name = none, age = none, hobbies = none): if (name and age): print('my name is %s and i am %d years old.' %(name, age)) elif (name): print('my name is %s.' %(name)) if (hobbies and (type(hobbies) is list)): for hobby in hobbies: if (type(hobby) is str): print('%s is a hobby of mine.' %hobby) describe_me('jolly roger', 36, ['sailing', 2, 'treasure-hunting', 3, 4, true])
我们在这里扩展了我们的代码,但它到底在做什么?现在我们正在检查 hobbies 参数是否收到了参数,并且我们还在检查以确保该参数是一个列表。如果第一次检查解析为 true,那么我们尝试执行代码块内的所有内容,这应该输出以下消息:
# output => 'my name is jolly roger and i am 36 years old.' 'sailing is a hobby of mine.' 'treasure-hunting is a hobby of mine.'
课程
类本质上是一个模板,您可以重用它来创建新的对象实例。如果您不熟悉类的概念,那么这可能听起来真的令人困惑,但我们将在此前提下进行扩展。
class car: year = 0 make = '' model = ''
让我们首先定义 car 类对象的内容,在本例中,它有几个变量,这些变量被初始化为我们想要存储在其中的数据类型。那么使用这个基本模板,我们如何创建一个作为 car 类实例的新对象?
my_car = car() my_car.year = 2007 my_car.make = 'toyota' my_car.model = 'camry'
我们首先创建一个变量 my_car,它等于 car 类的新实例。创建新对象后,我们将其中的变量重新分配为我们想要的值。然而,我们当前的问题是我们必须单独打印每个变量的值。
print(my_car) # => <__main__.car object at> print(my_car.year) # => 2007 print(my_car.make) # => toyota print(my_car.model) # => camry </__main__.car>
让我们通过向 car 类添加一些额外的功能来完成此任务。我们将向该类添加一个新方法,该方法在调用时将打印实例的年份、品牌和型号。
class Car: year = 0 make = '' model = '' def describe_me(self): print(self.year) print(self.make) print(self.model)
太好了,现在我们已将此功能添加到我们的 car 类中。那么这对我们意味着什么呢?现在我们可以创建遵循我们的汽车模板的对象的许多实例!需要注意的是,您可以通过几种不同的方式来定义类,因此不要觉得您在这里受到太多限制!
结论
我希望这个介绍能让您了解 python 和其他语言之间的差异。我仍在学习很多关于 javascript 和全栈开发的知识,所以不幸的是我没有花那么多时间在 python 上。然而,我认为作为开发人员探索适合您的工具包的选项是一件好事!
如果您想了解更多有关python的信息,您可以查看文档以深入研究概念。如果您正在寻找适合初学者的教程,那么我强烈建议您查看 learn python 组织网站。
以上就是Python 基本介绍的详细内容,更多请关注php中文网其它相关文章!