Python以及基础语法保姆级教程(超详细)-3

简介: Python以及基础语法保姆级教程(超详细)

Python以及基础语法保姆级教程(超详细)-2

https://developer.aliyun.com/article/1537716


五 函数

5.1 什么是函数?

函数:封装具有某种功能的代码块

自定义函数:将一段有规律的,可以重复使用的代码定义成函数,一次编写,多次调用

上面提到的函数:len() range() type() print() input()…这一些都是内置函数,可以直接使用的函数

5.2 函数的定义

#定义函数
def 函数名():
    函数体(就是函数具体功能的代码)
#调用函数
函数名()
# 定义函数
def fun1():
    print('这是我的第一个函数')
    print('hello')
# 调用函数
fun1()

5.3 函数的参数

格式:

#定义函数
def 函数名(形式参数/形参):
    函数体(就是函数具体功能的代码)
#调用函数
函数名(实际参数/实参)
def fun2(a):
    print(a)
name = '小明'
fun2(name)

形式参数(形参):就是一个参数名,没有任何数值,在函数里面, 形参就位于定义函数的括号内

实际参数(实参):有实际的数值,位于调用函数时函数名后面的括号内

函数在实现参数和调用参数的过程叫做:传递参数(传参)

5.4 参数的分类

5.4.1 必须参数

就是必须按照正确的顺序来将实际参数传入到函数中

def hello(name):
    print(f'hello,我叫{name}')
hello('小明')

形参和实参的数量要一致

注意函数参数的位置,实参和形参必须一一对应

5.4.2 默认参数

在函数定义的时候,就写好了参数值,在后续调用参数就可以不用传参.如果在使用调用函数的时候传入参数,原来的参数值就会被覆盖

def name(n='小明'):
    print(f'我的名字是{n}')
name()
name('小红')  # 第二次调用传参把原来的参数值给覆盖了
# 我的名字是小明
# 我的名字是小红

注意: 定义默认参数的很好,一定要注意参数的位置–>默认参数一定要做必须参数的后面

5.4.3 关键字参数

就是在函数传入参数的时候,可以通过参数名来指定

格式:参数名= 参数值

def info(name,age):
    print(f'姓名:{name}')
    print(f'年龄:{age}')
info(age=18,name='小明')
"""
姓名:小明
年龄:18
"""

不需要担心参数的位置

5.4.4 可变长参数
5.4.4.1 单星号可变

在参数名前加一个*,该值就是可变参数,可以接收多个参数值,也可以不没有.接收的实参必须是位置参数形式

def fun1(name ,age,*args):
    print(name, age,args)
    #print(args)
fun1('小明',18)
fun1('小明',18,'','python讲师','家乡湖南')

该参数接收对于的参数值,全部保存在元组中

5.4.4.2 双星号可变

在参数名前加一个**,该值就是可变参数,可以接收多个参数值,也可以不没有.接收的实参必须是关键字参数形式

def fun2(**kwargs):
    print(kwargs)
fun2(name = '小明',job ='老师',age = 18)
# {'name': '小明', 'job': '老师', 'age': 18}

该参数接收的参数值,是以字典的形式保存,其中参数名就是key,参数值就是value

5.5 返回值

返回值 =return, 就是把值返回给函数本身

格式:

def 函数名(形参):
    代码块
    return 返回值

可以把函数里面的代码理解为过程,返回值表示的是结果

六 Python文件操作

6.1 字符编码

ASCII(American Standard Code for Information Interchange)是一种使用7位二进制编码表示字符的字符集。它最初是为英语和西欧语言设计的,并包括基本的拉丁字母、数字、标点符号等。ASCII编码只能表示128个字符,无法表示其他语言的字符。
GBK(Guo Biao Ku,国标码)是中文编码字符集,是中国国家标准GB 2312的扩展版本。它使用双字节编码,可以表示中国大陆的简体中文字符。GBK编码包含了GB2312的字符,并增加了更多中文字符和符号,总共可以表示21886个字符。
Unicode是一种字符集,它为世界上的各种语言和符号提供了唯一的编码值。Unicode字符集收录了几乎所有已知的字符,包括不同语言的字符、符号、标点符号以及各种技术和专业领域的特殊字符等。每个字符都有唯一的Unicode编码值,可以用整数表示。
UTF-8(Unicode Transformation Format-8)是一种针对Unicode的可变长编码方案。它使用一至四个字节来编码Unicode字符,以便在计算机中存储和传输。UTF-8编码可以表示世界上几乎所有的字符,包括ASCII字符和非拉丁字符。由于UTF-8编码的灵活性和广泛应用,它已成为互联网上最常用的字符编码方式。
utf-8收集世界上大部分国家的语言文字,然后整合一套编码(万国码)

6.2 文件读取

mode常用的三种基础访问模式:

6.3 文件写入

# 第一步:打开文件
with open('python.txt', 'w') as f:
  # 第二步:文件写入
  f.write('hello, 我叫小明')
  # 第三步:内容更新
  f.flush()
  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush的时候,内容会真正写入文件
  • 这样做会频繁的操作硬盘,导致效率下降


七 模块与包

7.1 什么是模块?什么是包?

模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码

从物理上看,包就是一个文件夹,在该文件夹下自动创建了一个 _ init _.py 文件 ,该文件夹可用于包含多个模块文件 从逻辑上看,包的本质依然是模块

7.2 模块与包的导入方式

常用的组合形式如:

import 模块名/包名
from 模块名/包名 import 类、变量、方法等
from 模块名/包名 import *
import 模块名/包名 as 别名
from 模块名/包名 import 功能名 as 别名

7.3 模块的分类

7.3.1 内置模块
python自带的 不需要下载,直接去使用 #模块需要导入
import random  # 随机模块
import time  # 时间模块
import os  # 系统模块
.....
7.3.2 第三方模块

由其他开发技术人员写的代码,需要下载,才能使用

requests  # 爬虫
pygame  # 游戏开发
pywin32  # Windows编程
...
# 去终端下载模块
pip install 模块名
# pip install requests
# 卸载模块
pip uninstall
# 查看模块 
pip list
# 更新pip
python -m pip install --upgrade pip -i

八 面向对象

8.1 什么是面向对象

面向对象是一种编程范式,它将程序中的数据和操作封装在一个对象中,从而使得程序更加模块化、可重用和易于维护。在面向对象编程中,对象是类的实例化,类是一种抽象的数据类型,它定义了一组属性和方法。


面向对象编程的核心思想是封装、继承和多态。封装是将数据和操作封装在一个对象中,隐藏对象的内部实现细节,只暴露必要的接口给外部访问。继承是通过继承父类的属性和方法,来创建一个新的子类,子类可以重写父类的属性和方法,从而实现更加灵活的功能。多态是指同一个方法可以根据不同对象的实现方式,实现不同的行为。


8.2 类的定义

class 类名:
    类代码(属性,行为)
# 类名的定义:使用大驼峰命名方式(所有单词首写字母大写)
class Dog:
    # 类属性
    name = '狗'    
    # 类方法
    def run(self):
        print('会跑')
# 定义类之后没有实例化对象执行代码,类中的代码也是会执行
# 定义在类中变量称为属性,函数为方法

8.3_ init_ 初始化方法 和 self

  • _ init_ 初始化方法,实例化方法,魔法方法,构造方法,该方法再初始化对象的时候被调用,通常情况用在设计对象的属性,该方法再实例化对象的时候会自己调用执行,不需要手动调用
  • 类中的每个方法在创建的时候基本上都自动定义了一个self参数

self:用来表示对象本身的

class People:
    # 类属性(类属性是所以对象共同的属性)
    age = 18
    name = '人类'
    # 初始化方法
    def __init__(self):
        # 对象属性(实例化属性)
        self.name = '帅哥'
    def run(self):
        print(f'{self.name}在跑步')
# 创建对象
yumo = People()
laoli = People()
print(yumo.name) 
print(laoli.name) 
print(yumo.age) 
"""
帅哥
帅哥
18
"""

8.4 面向对象(封装)

概念:封装是指将数据和行为打包到一个类中,并可以控制外部访问的级别。封装可以保护数据和方法的访问,并且提高代码的可维护性。我们可以利用访问控制修饰符来实现封装,包括公有、私有、受保护和包访问等四种级别。

class Dog:
    '''
        类文档
        这个是类的说明
    '''
    # 类属性
    name = '哈士奇'
    sex = '母'

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

    def sleep(self):
        print(f'{self.name}在大门口睡大觉')

    def eat(self):
        print(f'{self.name}想吃饭,体重{self.weight},过重不然吃')

erha = Dog('二哈',2,50)
print(erha.name)
print(erha.age)
print(erha.sex)

erha.sleep()
erha.eat()

8.5 面向对象(继承)

概念:继承是指一个类可以从父类中继承方法和属性。如果父类的某个属性或方法也在子类中定义了,那么子类会重写父类的属性或方法,这样子类可以更好地针对自己的特定要求来实现相应的功能。

# 师傅类
class Master(object):
    def __init__(self):
        self.gf = '葵花点穴手'

    def batttle(self):
        print(f'运用了{self.gf}在江湖在无对手')

# 定义一个徒弟
class Prentice(Master):
    pass

ym = Prentice()
print(ym.gf)
ym.batttle()

8.6 面向对象(多态)

概念:多态是指对象可以用多种形态来引用。这样做可以使代码更加灵活,因为同样的操作可以应用于不同的类型。

class OtherBank(Bank):
    # 存款
    def set_money(self,k_money):
        if self.money + k_money >= 5:
            super().set_money(k_money-5)
        else:
            print('穷鬼一个,手续费都不够')

    # 取款
    def get_money(self, k_money):
        if self.money >= k_money+5:
            super().get_money(k_money+5)
        else:
            print('穷鬼')
ym =  OtherBank(123,456,20)
ym.set_money(3)
ym.set_money(3000)
ym.get_money(1)

九 异常

异常:就是在程序执行过程中有逻辑或者其他的错误导致的,是的程序终止运行

异常处理:在程序执行的过程中,发现错误对其进行处理,让程序可以正常执行不为此错误而被迫停止运行

9.1 异常错误

# 常见错误
name error:名称错误-->使用未定义的变量导致的错误
SyntaxError:语法错误-->由于代码存在拼写错误,缺少冒号等导致的错误
TypeError:类型错误-->针对无效的数据类型进行操作导致的错误
indexerror:数组越界错误,访问列表,元组字典不存在的元素导致的错误
file Not Found error:文件不存在错误:打开不存在的文件导致的错误

9.2 异常处理

语法格式:

try:
    代码块(感觉有错误的代码)
exceprt 异常类型:
    判断到上面的代码有异常之后执行的代码
else:
    代码没有异常执行的代码
finally:
    不管代码有没有错误都会执行代码
# 在异常类型加as 变量名 ,可以获取到异常的信息
# Exception: 可以捕获所以的异常

9.3 assert断言

发送AssertionError异常错误

assert 判断表达式,返回异常信息(当判断表达式为False才会执行)
# 表达是bool类型才可以进行使用

9.4 定义异常

raise Exception(返回的异常信息)
有时候,在程序中可以需要自定义异常来报答特定的错误或者整体消息
在python中,可以通过继承Exception类来定义自己的异常类.

以上就是全部内容啦,如有错误以及不足之处,请大佬们及时指出。愿与大家一起共同进步!

相关文章
|
5天前
|
数据采集 小程序 数据库
20年“镇国级”IT大牛,竟搞出500页漫画Python零基础顶级教程!
乔布斯说每个人都应该学习一门编程语言。Python正热,我决定通过编程让自己习得一种思考问题的方式,这也是我在个人编程生涯中的最大收获。 我以为只能枯燥无味地学编程,直到看到本书的样章,以漫画形式让我更直观、生动地了解到什么是编程。超级喜欢这种漫画风格。我回想起自己当年学习编程语言时的情景:逼迫自己背诵和消化、吸收那些自己根本没有理解的内容。如果当时有这么一本书,我就不会学得那么艰难,然后用了那么久才摸索成为一名“攻城狮”。
|
5天前
|
存储 Python 容器
Python基础语法:变量和数据类型详解(整数、浮点数、字符串、布尔值)
变量和数据类型是Python编程的基础,理解这些概念对于编写高效和正确的代码至关重要。通过本文的介绍,希望你能对Python中的变量和常用数据类型有一个清晰的认识,并能够在实际编程中灵活运用这些知识。
|
5天前
|
Python
Python基础语法:运算符详解(算术运算符、比较运算符、逻辑运算符、赋值运算符)
运算符是Python编程中的重要组成部分,理解并熟练使用这些运算符有助于编写高效、简洁的代码。本文详细介绍了算术运算符、比较运算符、逻辑运算符和赋值运算符的使用方法,并通过综合示例展示了它们在实际编程中的应用。希望通过本文的介绍,您能更好地掌握Python中的运算符。
|
1天前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
9 1
|
1天前
|
网络协议 关系型数据库 数据挖掘
python小白快速入门教程
Python是一种解释型、面向对象、动态数据类型的高级编程语言。
7 1
|
1天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
【7月更文挑战第22天】构建RESTful API实战:**使用Python Flask设计图书管理API,遵循REST原则,通过GET/POST/PUT/DELETE操作处理/books及/books/<id>。示例代码展示资源定义、请求响应交互。关键点包括HTTP状态码的使用、版本控制、错误处理和文档化。本文深入探讨设计哲学与实现技巧,助力理解RESTful API开发。
9 0
|
2月前
|
存储 安全 API
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
108 0
|
2月前
|
机器学习/深度学习 数据采集 C++
【Python 基础教程 07】全面掌握Python3数字操作:入门到精通的实用指南
【Python 基础教程 07】全面掌握Python3数字操作:入门到精通的实用指南
108 2
|
2月前
|
Linux 数据库连接 C++
【Python 基础教程 23】Python3 错误与异常处理全面指南:从入门到精通的实用教程
【Python 基础教程 23】Python3 错误与异常处理全面指南:从入门到精通的实用教程
202 0
|
2月前
|
监控 API C语言
【Python 基础教程 22】全面揭秘Python3 os模块:从入门到高级的实用教程指南
【Python 基础教程 22】全面揭秘Python3 os模块:从入门到高级的实用教程指南
156 1