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类来定义自己的异常类.

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

相关文章
|
2天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
8 1
|
1天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
6 0
|
1天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
7 0
|
2天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy 教程之 SciPy 模块列表 13 - 单位类型。常量模块包含多种单位:公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例:`constants.zero_Celsius` 返回 273.15 开尔文,`constants.degree_Fahrenheit` 返回 0.5555555555555556。
6 0
|
3天前
|
Python
SciPy 教程 之 SciPy 模块列表 11
SciPy教程之SciPy模块列表11:单位类型。常量模块包含公制单位、质量单位、角度换算、时间单位、长度单位、压强单位、体积单位、速度单位、温度单位、能量单位、功率单位、力学单位等。体积单位示例展示了不同体积单位的换算,如升、加仑、流体盎司、桶等。
8 0
|
18天前
|
存储 程序员 开发者
Python编程基础:从入门到实践
【10月更文挑战第8天】在本文中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基本概念开始,然后逐步深入到更复杂的主题,如数据结构、函数和类。最后,我们将通过一些实际的代码示例来巩固我们的知识。让我们一起开始这段Python编程之旅吧!
|
6天前
|
安全 数据处理 开发者
Python中的多线程编程:从入门到精通
本文将深入探讨Python中的多线程编程,包括其基本原理、应用场景、实现方法以及常见问题和解决方案。通过本文的学习,读者将对Python多线程编程有一个全面的认识,能够在实际项目中灵活运用。
|
6天前
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
26 9
|
2天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!
|
3天前
|
设计模式 监控 数据库连接
Python编程中的设计模式之美:提升代码质量与可维护性####
【10月更文挑战第21天】 一段简短而富有启发性的开头,引出文章的核心价值所在。 在编程的世界里,设计模式如同建筑师手中的蓝图,为软件的设计和实现提供了一套经过验证的解决方案。本文将深入浅出地探讨Python编程中几种常见的设计模式,通过实例展示它们如何帮助我们构建更加灵活、可扩展且易于维护的代码。 ####