不破不立,那些年错过的Python

2,571 阅读6分钟

随着OpenAI的发展,Python的重要性不言而喻。不知你是否和我一样,不知道曾经说过多少次我要学Python,都没有执行起来.... 近期我在知识库中更新了一波Python教程,选取了这一篇分享给大家。

前言

很多时候我们需要让程序变成交互性的,能够对用户输入做出响应。交互性的应用程序可以极大丰富应用功能,比如我们可以做一个自己的聊天机器人等等,我们先来看如何接收用户的输入。

认识input函数

函数input()函数可以让程序暂停运行,等待用户输入文本。获取用户 输入后,Python将其赋给一个变量。比如我们让用户输入姓名,代码如下所示。

name = input("请输入你的姓名:")
print(f"欢迎{name}")
work = input("请问你的工作是什么:")
print(f"哦,{work}是一份非常有前景的工作")

input函数可以接受一个prompt提示语,等待用户输入完成后,会将用户输入的内容赋值给定义的变量。运行上述程序,输入“黄林晴”,工作输入“Android开发工程师”

怎么样,是不是瞬间逼格高了很多,人工“智能”的一小步。

如果我们的prompt提示语过长,可以采用字符串拼接的方式,代码如下所示。

prompt = "尊敬的先生/女士,非常荣幸能与您进行交流。在这个美好的时刻,我想请教您一个问题:请问"
prompt += "\n你叫什么名字?"
name = input(prompt)

我们也可以结合while循环让那个用户一直输入,直到输入结束标志,代码如下所示。

prompt = "Q:"
key = ''
while key != 'end':
    key = input(prompt)
    if key != 'end':
        print(f"A:我不知道什么是{key}")
    else:
        print("Bye!")

运行程序结果如下所示。

当代码量比较多的时候,我们会将方法拆分为各种函数。

函数

认识函数

函数是带名字的 代码块,用于完成具体的工作。要执行函数定义的特定任务, 可调用该函数。比如我们将上面的方法写在一个函数里面。代码如下所示。

def chat () :
    prompt = "Q:"
    key = ''
    while key != 'end':
        key = input(prompt)
        if key != 'end':
            print(f"A:我不知道什么是{key}")
        else:
            print("Bye!")

这里我们使用def关键字,定义了一个名为chat的函数。如果我们想调用整个函数直接调用chat()即可。

函数传参

在Python如果函数中包含参数,我们只直接在函数的括号内填写即可,比如上述方法中结束标志改为从参数传入,修改代码如下所示。

def chat(enkey):
    prompt = "Q:"
    key = ''
    while key != enkey:
        key = input(prompt)
        if key != enkey:
            print(f"A:我不知道什么是{key}")
        else:
            print("Bye!")

调用时,直接传递参数即可,代码如下所示。

chat("end")

当然我们也可以为形参指定默认值,比如

def chat(enkey = "end"):

这些与Kotlin都大同小异,所以我们只是简单的记录一下。

带有返回值的函数

有些函数是需要返回值的,而带有返回值函数的定义Python是不同于其他语言的,其他语言都要定义返回类型,而Python直接返回即可。比如我们编写一个方法求两个数的和,可以编写如下所示的代码。

def sum(num1, num2):
    return num1 + num2

调用方法如下所示。

value = sum(1, 2)
print(f"两个数的和为:{value}")

运行程序,打印结果为3,可以看出Python函数的声明还是非常简洁的。

导入函数

在实际项目开发中会有大量的函数,为了便于管理,我们通常会将函数放在单独的模块中我们也可以说放在单独的文件中,比如我们新建pys文件夹,在文件夹下创建sum.py文件,将上述定义的sum函数写在这个文件中,然后需要在main.py中调用这个方法,当前目录结构为

现在我们在main.py中调用这个方法,是没有办法直接调用到的,需要导入这个模块或者这个模块对应方法,代码如下所示。

from pys.sum import sum_number

导入之后就可以在main.py中正常调用了。在导入外部模块函数的时候可能出现与当前模块冲突的情况,所以我们还可以使用 as 关键字给导入的函数指定别名,比如,我们将sum_number函数指定别名为add,调用代码如下所示。

from pys.sum import sum_number as add

value = add(1, 2)
print(f"两个数的和为:{value}")

同样的我们也可以给导入的模块指定别名,这里就不展示了。如果我们想要导入模块下的所有函数可以使用*,代码如下所示。

from pys.sum import *

类的定义

面向对象编程的单位就是类,我们都是有开发基础的,所以这里不说类是什么,我们看如何在Python中使用类。

我们创建一个Student类,用于记录Student的姓名、年龄,成绩等信息,创建出的Student类如下所示。

class Student:

    def __init__(self, name, age, core):
        self.name = name
        self.age = age
        self.core = core

    def get_core(self):
        return f"{self.name}的成绩是{self.core}分"

这里有几点需要注意的:

  • 这里的init方法相当于java中的构造方法
  • 形参self是必不可少的,在实例化Student类的时候会自动传入
  • get_core函数由于要访问属性,所以也要传入一个self形参,如果不需要则不用包含

现在我们来实例化一个student,并且获取他的成绩,调用代码如下所示。

from pys.Student import Student

student1 = Student("黄林晴", 28, 95)
print(student1.get_core())

运行程序如下图所示。

其他的如更改类属性等方法都与在Java中大同小异,所以直接省略了。

类的继承

在Python中继承的写法也很简单,在子类声明的括号中传父类即可,比如有一个类Ahuangge继承自Student类,编写代码如下所示。

class Ahuangge(Student):

    def __init__(self, name, age, core):
        super().__init__(name, age, core)

    def get_core(self):
        print("qwe")

在init中调用父类方法,然后重写get_core方法返回字符“qwe”,当然我们也可以添加自己的独有方法属性等,这里就不再一一展示了,我们知道如何继承一个类即可。

编码风格

和其他语言基本一致,Python中的类名应采用驼峰命名法 ,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。

对于每个类,都应紧跟在类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采 用的格式约定。每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。