返回顶部
首页 > 资讯 > 后端开发 > Python >Python基础知识之函数,类,模块
  • 856
分享到

Python基础知识之函数,类,模块

2024-04-02 19:04:59 856人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、Function 函数1)定义函数2)参数设置3)全局和局部变量2、Class类1)定义class2)class的功能3)继承4)私有属性和功能5)特殊方法3、Module模

1、Function 函数

编程中,需要重复写的功能,可以包装成一个函数

1)定义函数

定义函数之前,实现给一个字符串增加前缀和后缀的操作:


f1 = "f1"
f2 = "f2"
f1 += ".txt"
f1 = "my_" + f1
f2 += ".txt"
f2 = "my_" + f2
print(f1, f2)
my_f1.txt my_f2.txt

定义函数之后:


def modify_name(filename):
    filename += ".txt"
    filename = "my_" + filename
    print(filename)
modify_name("f1")
modify_name("f2")
my_f1.txt
my_f2.txt

上述函数里面用到了参数,调用的时候需要进进行传参数,但有时也可以没有参数,eg:


def modify_name():
    filename = "f1"
    filename += ".txt"
    filename = "my_" + filename
    print(filename)
modify_name()
my_f1.txt

一个函数也可以拥有返回值,将函数处理后,可以将想要返回的结果返回


def modify_name(filename):
    filename += ".txt"
    filename = "my_" + filename
    return filename
new_filename = modify_name("f1")
print(new_filename)
my_f1.txt

2)参数设置

调用函数时,如果函数有参数,那么需要给函数传参,函数本来的参数叫实参,传入的参数叫实参,参数传递有以下几种方式:


def f(x, a, b, c):
    return a*x**2 + b*x + c*1

print(f(2, 1, 1, 0))    # 忽略参数名,需要按顺序一一对应
print(f(x=2, a=1, b=1, c=0))    # 写上参数名,按名字传参
print(f(a=1, c=0, x=2, b=1))    # 若用参数名,可以打乱顺序传参
6
6
6

另外,对于不是一直变化的参数,可以给参数设置一个默认值,如果设置了默认值,传参时可以不给改参数传值,否则每个参数都要传参成功才能调用


def f(x, a=1, b=1, c=0):
    return a*x**2 + b*x + c*1

print(f(2, a=2))
print(f(2))
10
6

Tip: 设置了默认值的参数和未设置默认值的参数要分开放,也就是说不可以将未设置默认值的参数跟在设置了默认值参数的后面

3)全局和局部变量

  • 全局变量(global):函数里外都能用(公用)
  • 局部变量(local):仅在函数内使用(私用)

def modify_name():
    filename = "f1.txt"	# 这里就是一个局部变量
    print("local filename:", filename)
modify_name()
print("global filename:", filename) # 这里会报错

filename = "f1.txt"	# 这里便是一个全局变量
def modify_name():
    print("local filename:", filename)
modify_name()
print("global filename:", filename)
  • 全局变量和局部变量冲突时,局部变量优先!!!

filename = "f1.txt"
def modify_name():
    filename = "f2.txt"
    print("local filename:", filename)
modify_name()
print("global filename:", filename)
local filename: f2.txt
global filename: f1.txt
  • 特殊情况:允许内部来修改外部的值,必须使用global声明,相当于提出了一个申请

filename = "f1.txt"

def modify_name():
    global filename  # 提出申请
    filename = "f2.txt"
    print("local filename:", filename)

modify_name()
print("global filename:", filename)
local filename: f2.txt
global filename: f2.txt

2、Class类

目的:为了描述一个或一类具体的物体,eg:猫的特征,动作等

1)定义class

使用class File来创建一个类,注意通常约定类的名字要首字母大写。

然后使用my_file = File()来创建一个实例,每个实例都继承了一个类的基本属性


class File:
    def __init__(self):
        self.name = "f1"
        self.create_time = "today"

my_file = File()
print(my_file.name)
print(my_file.create_time)
f1
today
  • 其中 self 是作为类自己的一个索引,不管你在定义类的时候,想要获取这个类的什么属性或功能,都可以通过self来获取。
  • __init__():创建一个实例的时候,类都会自动进行一次初始化,即运行一遍__init__()函数
  • 修改属性的值:(但这样修改的值,仅对当前实例有效)

my_file.name = "new_name"
print(my_file.name)
new_name

2)class的功能

  • __init__():也可以对该函数进行传参:

class File:
    def __init__(self, name, create_time="today"):
        self.name = name
        self.create_time = create_time

my_file = File("my_file")
print(my_file.name)
print(my_file.create_time)
my_file
today
  • 还可以定义更多的功能,比如重命名等

class File:
    def __init__(self, name, create_time="today"):
        self.name = name
        self.create_time = create_time
    def change_name(self, new_name):
        self.name = new_name

my_file = File("my_file")
my_file.change_name("new_name")
print(my_file.name)
new_name
  • 而且类的功能也可以有返回值

class File:
    def __init__(self, name, create_time="today"):
        self.name = name
        self.create_time = create_time
    def get_info(self):
        return self.name + " is created at " + self.create_time

my_file = File("my_file")
print(my_file.get_info())
my_file is created at today

3)继承

  • 俩个类分开写,eg:

class Video:
    def __init__(self, name, window_size=(1080, 720)):
        self.name = name
        self.window_size = window_size
        self.create_time = "today"
        
class Text:
    def __init__(self, name, language="zh-cn"):
        self.name = name
        self.language = language
        self.create_time = "today"

可以发现,这俩个类是有共性的,比如都有name,和create_time

所以,可以编写一个底层类,使得这俩个类继承底层类,从而减少了类之间的共有属性/功能的重复开发!!!

一个类可以继承另一个类,从而使得这个类成为子类,被继承的类为父类

子类可以继承父类的功能/功能,而且子类还可以重定义父类的功能


class File:
    def __init__(self, name, create_time="today"):
        self.name = name
        self.create_time = create_time
    def get_info(self):
        return self.name + " is created at " + self.create_time

class Video(File):
    def __init__(self, name, window_size=(1080, 720)):
        # 将共有属性的设置导入File父类
        super().__init__(name=name, create_time="today")
        self.window_size = window_size

class Text(File):
    def __init__(self, name, language="zh-cn"):
        super().__init__(name=name, create_time="today")
        self.language = language
    # 也可以在子类中复用父类功能
    def get_more_info(self):
        return self.get_info() + ", using language of " + self.language

v = Video("my_video")
t = Text("my_text")
print(v.get_info())  # 调用父类功能
print(t.create_time)  # 调用父类的属性
print(t.language)  # 调用自己的属性
print(t.get_more_info())  # 调用自己复用父类的功能
my_video is created at today
today
zh-cn
my_text is created at today, using language of zh-cn

4)私有属性和功能

  • 私有:_一个下划线开头,弱隐藏,不想让别人用,但别人在必要情况下还是可以用的
  • 私有:__俩个下划线开头,强隐藏,不让别人使用

class File:
    def __init__(self):
        self.name = "f1"
        self.__deleted = False  # 不让别人使用这个变量
        self._type = "txt"  # 不想别人使用这个变量
    def delete(self):
        self.__force_delete()
    def __force_delete(self):   # 不让别人使用这个功能
        self.__deleted = True
        return True
    def _soft_delete(self):  # 不想让别人使用这个功能
        self.__force_delete()  # 虽然是强隐藏,但是可以在内部随便调用
        return True

f = File()
print(f._type)  # 可以拿到值,但是会有⚠️
print(f._soft_delete())  # 可以调用,但是会有⚠️
print(f.__deleted)  # 会直接报错
print(f.__force_delete)  # 会直接报错

5)特殊方法

定义 含义
def __init__() 初始化实例
def __repr__() 字符串的“官方”表现形式
def __str__() 字符串的“非正式”值
def __iter__() 遍历某个序列
def __next__() 从迭代器中获取下一个值

3、Module模块

Moudel主要是为一个相对比较大的工程,涉及到多个文件之间的互相调用关系。

  • 对于一个项目来说,它需要去实现很多功能,这时候,如果可以把某一个或者某一类功能分类写到了一个文件之中,在合并的时候,我不便不需要知道文件中的代码具体什么,我只需要调用你给的这个文件中的功能就可以!也
  • 就是说,作为你所给文件中的功能的使用者,我不关心你实现功能的代码,我只关系我可以使用函数调用到你这个功能就好

# file.py
def create_name():
  return "new_file.txt"

eg: 比如上述file.py文件,实现了create_name的功能,然而作为这个功能的使用者,我不需要去了解这个功能所使用的代码,我只关心如何调用使用这个功能

1)引用module

比如新建了一个me.py,需要在这个文件之中引用file.py中的create_name()的功能


# me.py
import file
print(file.create_name())
new_file.txt

或者也可以这样调用


# me.py
import file as f1
print("f1:", f1.create_name())
class File:
  def create_name(self):
    return "new_file.txt"
f2 = File()
print("f2:", f2.create_name())
f1: new_file.txt
f2: new_file.txt

可以发现,这和类功能调用有着非常大的相似之处!!!

还有更多的引用方式:


# me.py
from file import create_name
print(create_name())
new_file.txt

假设file.py中还有一个函数create_time()


# me.py
from file import create_name, create_time
print(create_name())
print(create_time())
new_file.txt
today

如何file.py中函数太多,记不清,那么可以如此引用:


# me.py
# 第一种
import file
print("1", file.create_name())
#第二种
from file import *
print("2", create_name())
print("2", create_time())

2)大项目的模块管理

在正规的module中,我们常会看到一个__init__.py文件,就像class里的def __init__(self),可以在里面写上如何初始化你的files目录,也可以设定目录中各元素的关系。

complex


# files/__init__.py
from .video import get_video_size

设置好__init__.py后,就可以直接从files里import get_video_size这个属于video.py的功能了


# me.py
from files import get_video_size
print(get_video_size())

但和video.py同级的text.py就无法通过import方式获取到text.py中的功能,因为未在files/__init__.py中声明


# me.py
from files import create_name

如果不在files/__init__.py中声明,但还想调用,则可以使用:


# me.py
import files.text
print(files.text.create_name)
# 或者
from files import text
print(text.create_name)

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Python基础知识之函数,类,模块

本文链接: https://lsjlt.com/news/155758.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python基础知识之函数,类,模块
    目录1、Function 函数1)定义函数2)参数设置3)全局和局部变量2、Class类1)定义class2)class的功能3)继承4)私有属性和功能5)特殊方法3、Module模...
    99+
    2024-04-02
  • Python基础之logging模块知识总结
    目录前言一、日志级别二、basicConfig三、日志写文件四、traceback记录前言 logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。 ...
    99+
    2022-06-02
    Python logging模块 python常用模块
  • Python基础之模块相关知识总结
    目录一、什么是模块二、导入模块三、name=‘main'四、搜索路径一、什么是模块 容器 -> 数据的封装 函数 -> 语句的封装 类 ->...
    99+
    2024-04-02
  • Python基础之函数和模块
    函数的基本使用 函数的定义:把具有独立功能的代码块组织成一个小模块,在需要的时候调用。或者说,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数的使用:1.定义函数;2.调用函数。 函数的作用:能提高应用的模...
    99+
    2023-01-31
    函数 模块 基础
  • Python基础学习函数+模块+类
    目录一、函数二、模块三、类和对象类的对象实例对象类的方法类的继承三、总结前言: Python基础知识+结构+数据类型 Python基础学习列表+元组+字典+集合 今天的是Python...
    99+
    2024-04-02
  • Python可视化matplotlib模块基础知识
    目录1. matplotlib 模块概述 2. matplotlib.pyplot 相关方法 3. matplotlib.pyplot 图表展示 前言: 互联网时代下,在网络中每天都...
    99+
    2024-04-02
  • Python基础之数据类型知识汇总
    目录一、数字类型二、字符串类型三、布尔类型四、空类型五、列表类型六、元组类型七、字典类型一、数字类型 1、整型int 就是整数 :100 ,200,2,3,4······· 2、浮点...
    99+
    2024-04-02
  • python之基础知识
    1、变量: 2、字符串:用   “  ” 或 ' ' 标注的。 3、列表:[  ] 4、del 和 pop 的区别: 判断何时使用:当从列表中删除元素后不再使用,则del,若后续还使用则pop() 例: #del name =["lele...
    99+
    2023-01-30
    基础知识 python
  • Python编程基础之函数和模块
    目录二、函数(一)定义函数1、语法格式2、函数类型3、案例演示(二)调用函数1、简要说明2、案例演示(三)函数参数1、参数的多态性2、参数赋值传递三、利用函数实现模块化1、创建多级菜...
    99+
    2024-04-02
  • Python基础之函数嵌套知识总结
    内部/内嵌函数 1、定义:在一个函数的函数体内使用关键字def关键字定义一个新的函数,这个新的函数就叫做内部/内嵌函数。 2、注意点:内部函数的整个函数体都在外部函数的作用域内,如...
    99+
    2024-04-02
  • python基础知识之函数初阶——命名
    python中的命名空间分三种: 内置的命名空间,在启动解释器的时候自动加载进内存的各种名字所在的空间,比如print,input等不需要定义就可以使用的名字 全局命名空间,就是从上到下所有我们定义的变量名和函数名所在的空间,是在程序从上...
    99+
    2023-01-31
    基础知识 函数 python
  • Python基础之数据类型知识有哪些
    这篇文章给大家分享的是有关Python基础之数据类型知识有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数字类型1、整型int就是整数 :100 ,200,2,3,4·······2、浮点型 float小...
    99+
    2023-06-15
  • Python基础知识(五)--数据类型
      #标识符,以字母或下划线开头,不与关键字重复  #不使用系统内置标识符、函数名、异常名  #不使用开头和结尾都是下划线作为自定义标识符名  #以免与系统定义的特殊方法或变量冲突  #当循环不影响实际变量的时候,可以在for..in中使用...
    99+
    2023-01-31
    基础知识 数据类型 Python
  • Python基础之数据类型相关知识总结
    1、字符串 (1)概念 字符串英文名string,简称str。 字符串就是由一个个字符连接起来的组合, 你平时所见的字母、数字、汉字、符号都是字符。 字符串可以用...
    99+
    2024-04-02
  • python基础学习之递归函数知识总结
    目录一、递归函数使用注意点二、递归的效率问题三、递归函数引入四、递归的深度五、通过缓存解决递归限制六、递归函数使用示例一、递归函数使用注意点 递归函数一定要编写终止条件,否则将产生无...
    99+
    2024-04-02
  • Python基础知识学习之类的继承
    目录一、继承的格式二、单继承三、多继承四、重写父类方法五、打印继承关系六、调用父类方法七、私有属性与方法一、继承的格式 类的继承格式如下,括号中的为父类名。 class 类名(父...
    99+
    2024-04-02
  • Python基础知识+结构+数据类型
    目录前言一、编程基础1.基本的输入输出2.变量3.基本运算符二、控制流程1.选择结构2.循环结构三、数据类型1.字符串前言 今天给大家分享一些Python的基础知识,想要盖好大房子,...
    99+
    2024-04-02
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2024-04-02
  • Python 专题一 函数的基础知识
    最近才开始学习Python语言,但就发现了它很多优势(如语言简洁、网络爬虫方面深有体会).我主要是通过《Python基础教程》和"51CTO学院 智普教育的python视频"学习,在看视频中老师讲述函数知识...
    99+
    2022-06-04
    基础知识 函数 专题
  • 怎么解析Python函数基础知识
    今天就跟大家聊聊有关怎么解析Python函数基础知识,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 一、函数基础简单地说,一个函数就是一组Python语句的组合,它们可以在...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作