首页 > 编程语言 >Python

Python

时间:2023-05-12 20:56:15浏览次数:50  
标签:返回 文件 函数 Python print 字符串

Python

变量

变量命名规则

  • 变量名必须以字母或下划线字符开头
  • 变量名称不能以数字开头
  • 变量名只能包含字母数字字符和下划线(A-z、0-9 和 _)
  • 变量名称区分大小写(age、Age 和 AGE 是三个不同的变量)

变量赋值

切片法:x, y, z = "Orange", "Banana", "Cherry"

多个变量名同时赋值:x = y = z = "Orange"

变量输出

print()函数

如果文本和变量同时输出,需要两者之间加 “ + ” 或 “ ,”

全局变量

函数外定义的变量为全局变量

Global 关键字,可以在函数中定义全局变量

数据类型

  • 文本类型:str
  • 数值类型:int , float, complex
  • 序列类型:list, tuple, range
  • 映射类型:dict
  • 集合类型:set, frozenset
  • 布尔类型:bool
  • 二进制类型:bytes, bytearray, memoryview

数字

整数

int:正数 负数 没有小数 长度不限

浮点数

float:包含小数的正数和负数

复数

complex:用 j 做虚数来编写

随机数

Python 没有 random()函数来创建随机数,但 Python 有一个名为 random 的内置模块,可用于生成随机数:

导入 random 模块,并显示 1 到 9 之间的随机数:

import random

print(random.randrange(1,10))

字符串

字符串的驻留机制

定义

相同内容的字符串不会出现不同的地址,只会同时指向同一个空间

驻留机制的几种情况

  • 字符串的长度为 0 和 1 时
  • 复合标识符的字符串
  • 字符串只在编译时进行驻留,而非运行时
  • 【-5,256】之间的整数数字
  • pycharm 对字符串进行了优化,都驻留

字符串驻留机制的优缺点

  • 当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的
  • 在需要进行字符串拼接时,建议使用 str 类型的 join 方法,而非 + ,因为 join()方法是先计算虎所有字符中的长度,然后再拷贝,只 new 一次对象,效率要比 ” + “ 效率高

字符串是数组

裁切

可以采用裁切语法返回一定范围的字符

b = "Hello, World!"
print(b[2:5])
b = "Hello, World!"
print(b[-5:-2])

获取字符串的长度

len() 函数返回字符串的长度:

a = "Hello, World!"
print(len(a))

字符串格式

  • 正如在 Python 变量一章中所学到的,我们不能像这样组合字符串和数字:
age = 63
txt = "My name is Bill, I am " + age
print(txt)
  • 但是我们可以使用 format() 方法组合字符串和数字!

format() 方法接受传递的参数,格式化它们,并将它们放在占位符 {} 所在的字符串中:

使用 format() 方法将数字插入字符串:

age = 63 
txt = "My name is Bill, and I am {}"
print(txt.format(age))
  • format() 方法接受不限数量的参数,并放在各自的占位符中:
quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))
  • 您可以使用索引号 {0} 来确保参数被放在正确的占位符中:
quantity = 3
itemno = 567
price = 49.95
myorder = "I want to pay {2} dollars for {0} pieces of item {1}."
print(myorder.format(quantity, itemno, price))

字符串方法

Python 有一组可以在字符串上使用的内建方法。

注释:所有字符串方法都返回新值。它们不会更改原始字符串。

方法 描述
capitalize() 把首字符转换为大写。
casefold() 把字符串转换为小写。
center() 返回居中的字符串。
count() 返回指定值在字符串中出现的次数。
encode() 返回字符串的编码版本。
endswith() 如果字符串以指定值结尾,则返回 true。
expandtabs() 设置字符串的 tab 尺寸。
find() 在字符串中搜索指定的值并返回它被找到的位置。
format() 格式化字符串中的指定值。
format_map() 格式化字符串中的指定值。
index() 在字符串中搜索指定的值并返回它被找到的位置。
isalnum() 如果字符串中的所有字符都是字母数字,则返回 True。
isalpha() 如果字符串中的所有字符都在字母表中,则返回 True。
isdecimal() 如果字符串中的所有字符都是小数,则返回 True。
isdigit() 如果字符串中的所有字符都是数字,则返回 True。
isidentifier() 如果字符串是标识符,则返回 True。
islower() 如果字符串中的所有字符都是小写,则返回 True。
isnumeric() 如果字符串中的所有字符都是数,则返回 True。
isprintable() 如果字符串中的所有字符都是可打印的,则返回 True。
isspace() 如果字符串中的所有字符都是空白字符,则返回 True。
istitle() 如果字符串遵循标题规则,则返回 True。
isupper() 如果字符串中的所有字符都是大写,则返回 True。
join() 把可迭代对象的元素连接到字符串的末尾。
ljust() 返回字符串的左对齐版本。
lower() 把字符串转换为小写。
lstrip() 返回字符串的左修剪版本。
maketrans() 返回在转换中使用的转换表。
partition() 返回元组,其中的字符串被分为三部分。
replace() 返回字符串,其中指定的值被替换为指定的值。
rfind() 在字符串中搜索指定的值,并返回它被找到的最后位置。
rindex() 在字符串中搜索指定的值,并返回它被找到的最后位置。
rjust() 返回字符串的右对齐版本。
rpartition() 返回元组,其中字符串分为三部分。
rsplit() 在指定的分隔符处拆分字符串,并返回列表。
rstrip() 返回字符串的右边修剪版本。
split() 在指定的分隔符处拆分字符串,并返回列表。
splitlines() 在换行符处拆分字符串并返回列表。
startswith() 如果以指定值开头的字符串,则返回 true。
strip() 返回字符串的剪裁版本。
swapcase() 切换大小写,小写成为大写,反之亦然。
title() 把每个单词的首字符转换为大写。
translate() 返回被转换的字符串。
upper() 把字符串转换为大写。
zfill() 在字符串的开头填充指定数量的 0 值。

注释:所有字符串方法都返回新值。它们不会更改原始字符串。

函数

函数的创建和调用

什么是函数

  • 函数就是执行特定任务和完成特定功能的一段代码

为什么需要函数

  • 实现代码复用
  • 隐藏实现细节
  • 提高可维护性
  • 提高可读性便于调试

函数的创建

def my_function():
  print("Hello from a function")

my_function()

函数的调用

默认参数值

如果我们调用了不带参数的函数,则使用默认值:

def my_function(country = "China"):
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
任意参数

如果您不知道将传递给您的函数多少个参数,请在函数定义的参数名称前添加 *。

这样,函数将接收一个参数元组,并可以相应地访问各项:

def my_function(*kids):
  print("The youngest child is " + kids[2])

my_function("Phoebe", "Jennifer", "Rory")

匿名函数 lambda

lambda 函数可接受任意数量的参数,但只能有一个表达式

为什么使用 lambda 函数

当您把 lambda 用作另一个函数内的匿名函数时,会更好地展现 lambda 的强大能力。

假设您有一个带一个参数的函数定义,并且该参数将乘以未知数字:

def myfunc(n):
  return lambda a : a * n

使用该函数定义来创建一个总是使所发送数字加倍的函数:

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))

BUG

代码异常处理机制

  • try:

  • except 异常类型1:

  • except 异常类型2:

  • ···

  • expect BaseException as e:


else:代码与 except 二者只执行其一,可以防止代码出错被处理后,继续执行源代码

  • finally:无论如何都会执行的代码

代码常见的异常类型

序号 异常类型 描述
1 ZeroDivisionError 除(或者取模)零(所有数据类型)
2 IndexError 序列中没有此索引
3 KeyError 映射中没有这个键
4 NameError 未声明 / 初始化对象(没有属性)
5 SyntaxError Python 语法错误
6 ValueError 传入无效参数

traceback模块

导入该模块后,在 except 中,traceback.print_exc() , 系统就会报出发生的错误

类与对象

类 与 对象 的创建

print('创建类------------------------------------------------------')


class Student:  # Student 为类的名称(类名)由一个或多个单词组成,单词首字母大写
    native_place = 'JiLin'  # 直接写在类里的变量,成为类属性

    # 初始化方法
    def __init__(self, name, age):  # name, age 为实例属性
        self.name = name  # self.name 成为实体属性
        self.age = age

    # 实例方法
    def eat(self):
        print(self, '学生在吃饭')

    # 静态方法
    @staticmethod
    def method():
        print('我使用了 @staticmethod 进行修饰,所以我是静态方法')

    # 类方法
    @classmethod
    def cm(cls):
        print('我使用了 @classmethod 进行修饰,所以我是类方法')


print('创建 Student 的对象---------------------------------')
stu1 = Student('张三', 30)
stu1.eat()
stu1.method()
Student.eat(stu1)

类方法和静态方法的使用方式

都需要类名直接调用的

Student.method()
Student.cm()

面向对象的三大特征

  • 封装:提高程序安全性

    • 将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。这样,无需关心方法内部的具体实现细节,从而隔离了复杂度
    • 在 Python 中没有专门的修饰符用于属性的私有,如果该属性不希望在类对象外部被访问,前边使用两个 “_”
  • 继承:提高代码的复用性

    • 如果一个类没有继承任何类,则默认继承 object,所以所有类都是父类,语法格式都相同

    • Python 支持多继承

    • 定义子类时,必须在其构造函数中调用父类的构造函数

    • 如果子类中与父类有相同名称的函数,子类会对父辈函数进行覆盖

    • super()函数会让子类对父类进行全属性和全方法的继承

      class Student(Person):
      def __init__(self, fname, lname):
       super().__init__(fname, lname)
      
    • 类方法重写:可以重新定义父类中的函数

      # 实例方法
      def eat(self):
          print(self.name, '在吃饭')
      # 重写前后----------------------------------------------
      def eat(self):
              super().eat()
              print(self.name, '干饭!')
      
    • object 类 常用继承 __str__(),以此返回用户描述

      def __str__(self):
          return '我是{0}, 今年{1}岁'.format(self.name, self.age)
      
  • 多态:提高程序的可拓展性和可维护性

文件

文件处理

在 Python 中使用文件的关键函数是 open() 函数。

open() 函数有两个参数:文件名和模式。

有四种打开文件的不同方法(模式):

  • "r" - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
  • "a" - 追加 - 打开供追加的文件,如果不存在则创建该文件。
  • "w" - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。
  • "x" - 创建 - 创建指定的文件,如果文件存在则返回错误。

此外,您可以指定文件是应该作为二进制还是文本模式进行处理。

  • "t" - 文本 - 默认值。文本模式。
  • "b" - 二进制 - 二进制模式(例如图像)。

语法

此外,您可以指定文件是应该作为二进制还是文本模式进行处理:

f = open("demofile.txt")

以上代码等同于:

f = open("demofile.txt", "rt")

因为 "r" (读取)和 "t" (文本)是默认值,所以不需要指定它们。

注释:请确保文件存在,否则您将收到错误消息。

文件方法

方法 描述
close() 关闭文件。
detach() 从缓冲区返回分离的原始流(raw stream)。
fileno() 从操作系统的角度返回表示流的数字。
flush() 刷新内部缓冲区。
isatty() 返回文件流是否是交互式的。
read() 返回文件内容。
readable() 返回是否能够读取文件流。
readline() 返回文件中的一行。
readlines() 返回文件中的行列表。
seek() 更改文件位置。
seekable() 返回文件是否允许我们更改文件位置。
tell() 返回当前的文件位置。
truncate() 把文件调整为指定的大小。
writeable() 返回是否能够写入文件。
write() 把指定的字符串写入文件。
writelines() 把字符串列表写入文件。

with语句

  • with 语句可以自动管理上下文资源,不论什么原因跳出 with 块,都能确保文件正确的关闭,以此来达到释放资源的目的
# 文件练习
with open('D:/test.txt', 'r') as src_file:
    print(src_file.read())
    pass

os 模块的常用函数

  • os 模块是 Python 内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
  • os 模块与 os.path 模块用于对目录或文件进行操作

关于python写项目

if name == '__main':

这是python模块确保不被运行的标志,Python属于脚本语言,从运行开始逐行运行,当这个.py文件被引用的时候,我们希望有些代码不被运行,所以写了这个main 确保被引用的时候不会全部运行

.pyc文件的出现和作用

  • 先大概了解一下python基本运行机制。Python程序运行时不需要编译成二进制代码,而直接从源码运行程序,简单来说是,Python解释器将源码转换为字节码,然后再由解释器来执行这些字节码。

    解释器的具体工作:
    1、完成模块的加载和链接;
    2、将源代码编译为PyCodeObject对象(即字节码),写入内存中,供CPU读取;
    3、从内存中读取并执行,结束后将PyCodeObject写回硬盘当中,也就是复制到.pyc或.pyo文件中,以保存当前目录下所有脚本的字节码文件。

  • image-20221024203949582

标签:返回,文件,函数,Python,print,字符串
From: https://www.cnblogs.com/thirteen-13-ljq/p/17396254.html

相关文章

  • Python中的for循环
    在Python中,for循环用于遍历序列(列表、元组、字符串等)或其他可迭代对象中的元素。for循环的语法如下:for变量in序列:执行代码块其中,变量是用于存储序列中当前元素的变量名,序列是要遍历的序列,代码块是要执行的操作。代码块必须缩进,通常使用四个空格缩进。下面是一个遍历列表......
  • 编程语言与Python介绍题
    计算机存储单位1024bytes=1KB  1024KB=1MB 1024MB=1GB 1024GB=1TB(10.24程序员节日)编程语言的发展史1.机器语言:计算机内部只认识01二进制数据。优点:执行效率高,缺点:学习难度大、跨平台性差2.汇编语言:用一个英文字母来表示一串二进制 优点:执行效率高,缺点:开发效率低,跨平......
  • Python通过GeoIP获取IP信息(国家、城市、经纬度等)
    前言IP地址信息是非常重要的情报信息,通过IP可以定位到该IP所在的国家、城市、经纬度等。获取IP信息的方式有很多,很多服务商都提供了相应的地址库或API接口服务。如国内的ipip.net,国外的ip-api.com、maxmind.com等。很多公司都是使用Maxmind网站的IP信息库,里面包含着IP的详细信息,......
  • Python 执行 Shell命令
    方法一:os.system() os.system()可以说是最为基本的运行shell命令的方式了,这个方法的特点就是直接运行命令,并将运行之后的状态值返回码返回,所以结果是一个int类型,这个方式比较常见是运用在只需要执行shell命令而不需要得到命令的返回结果的场景。比如执行一个创建目录的......
  • day02 编程语言与Python介绍
    昨日总结回顾第二节编程语言与Python介绍【一】引言基于上一节所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序。【二】编程语言分类【1】机器语言(1.1)什么是机器语言机器......
  • 水果识别系统python
    介绍水果识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。效果展示演示视频和源码视频+代码:http......
  • 在python3.7+中优雅的使用dataclass
    [本文出自天外归云的博客园]在Python3.7+中,dataclasses是一个非常优雅的工具,可以轻松地创建简单的类,并自动生成常见的类方法,比如 __init__、__repr__ 等。以下是一些使用dataclasses时需要注意的事项:导入dataclasses模块在使用dataclasses之前,需要先导入datacla......
  • python进阶-虚拟环境
    python两个模块:os:Thismoduleprovidesaportablewayofusingoperatingsystemdependentfunctionality.这个模块提供了一种方便的使用操作系统函数的方法。sys:Thismoduleprovidesaccesstosomevariablesusedormaintainedbytheinterpreterandtofunction......
  • Python 文件大小(Byte)可读性转化(KB、MB、GB、TB)
    Python文件大小可读性转化file_size_exchange.py#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2023/5/1217:52#@Software:PyCharm__author__="JentZhang"KB=1024MB=KB*KBGB=MB*KBTB=GB*KBdefformat_byte_repr(byte_num):&q......
  • Python-单引号、双引号和三引号的作用和区别
    (一)、作用 1.单引号:单引号内部为一串字符(str)。 2.双引号:双引号内部为一串字符,双引号内的字符串可以出现单引号(相当于双引号优先级更高),但不能嵌套双引号。 3.三引号:用于换行输出,且缩进会被打印出来。(三引号还可以用来进行块注释)。(二)、共同点python中变......