avatar

刘刚刚的blog

采菊东篱下,悠然见南山🦥

  • 首页
  • 大模型应用
  • 常用软件/工具
  • Halo
  • 关于
Home python基础-杂项
文章

python基础-杂项

Posted 2020-07-13 Updated 2024-12- 10
By Administrator
10~13 min read

1.接收用户输入 2.格式化输出 3.可变与不可变类型 4.深浅拷贝 5.列表模拟堆栈


占位

...代表代码略过

接受用户输入

语法

age = input("请输入你的年龄:")
在python3中,input() 会将用户输入的所有内容都保存成字符串类型。
在python2中,raw_input()的功能与python3的input一样,而使用input()时,用户输入的什么类型就存成什么类型

输出

print()

print()可以用逗号隔开接受多个参数,此时输出时,各个参数间会以空格隔开

print() 默认以回车结尾,可以传入 end 参数指定结尾字符

print(1,2) //=> 1 2

print(1,end="*")
print(2,end="*")
//=>1*2*

r 可以调整指针的位置,一般用于进度条的打印

print('\r%d'%1,end='')  
print('\r%d'%1,end='')  #打印时只会留最后一次打印的内容

格式化字符串输出

  1. %s

    • 可以按照位置一一对应,少一个多一个都不行。

    res = "my name is %s my age is %s" %('shuta','18')
    • 也可以用字典的形式,打破位置的限制

    res = "my name is %(name)s age is %(age)s" %{'name':'shuta','age':'18'}
    • %s 可以接受任意类型的传值,

    res = "my name is %s" %[1,2]
res = "my name is %s" %['name':1,'age':2]
res = "my name is %d"  %18   
  1. str.format

    • 按照位置传值

    res = "my name is {} my age is {}".format('shuta',18)
    • 按照索引传值

    res = "my name is {0}{0} my age is {1}".format('shuta',18)
    • 按照KV传值

    res = "my name is {name} my age is {age}".format(name='shuta',age=18)
  2. f (python3.5后版本支持)

   x = 'shuta'

   y = 18

   res = f'my name is {x} my age is {y}'

三种格式化输出方式

效率对比: f>format>%s

推荐使用 format,format 在2.6版本推出,目前python2的常用版本是2.7,该函数在2和3中都可以用

可变与不可变类型

  1. 可变类型:值改变,id 不变,证明改的是原值

    list、dict

    不可变类型:值改变,id 不变,证明产生的是新值,原值没有改变

    int 、float、str 、bool

  2. int 为不可变类型

    float 为不可变类型

    str 为不可变类型

深浅拷贝

  • 浅拷贝

    将一个列表变量赋值给另外一个变量时,如果改动一个变量则另外一个也会改动

    第一层可变类型与不可变类型的地址都一样

  • 深拷贝

    赋值时,会产生新的内存地址,会将不可变类型的内存地址原模原样给新的内存地址,可变类型的内存地址则会变.

    原因:不可变类型对读操作不影响,写操作会自动重新产生

    import copy
    list1 = ['shuta','shuta2','shuta3']
    list2 = copy.deepcopy(list1)

列表模拟队列与堆栈

队列

特点:先进先出 FIFO

//入队
list1.append(value)
//出队
list1.pop(0)

堆栈

特点: 后进先出

//入栈
list1.append()
//出栈
list1.pop()

字符编码

python解释器执行文件的流程:

  1. 启动解释器

  2. 从硬盘读取文件到内存中

  3. 解释执行读入内存的内容,开始识别语法

字符编码介绍

字符与二进制的对应关系称为字符编码表

ASCII表

  1. 只支持引文字符串

  2. 采用8位二进制对应一个英文字符串

** 在内存中固定使用的是unicode,在硬盘中存储文件的编码可以位其他 ,因此就出现了兼容问题。

unicode 所有的字符都通过2个字节进行保存,出现的问题:当一个文件中大部分字符只用一个字节是,前一个字节为空,导致io问题。

utf-8: 英文使用1个字节,汉字使用3个字节。减少了保存文件时的IO和文件大小

2.文本文件存取乱码问题

存乱 解决:编码格式应该设置成hi吃文件内字符串的格式

取乱 解决:文件是什么方式存的,就用什么方式读

解释器默认读文件的编码

python2默认:ASCII

python3默认:utf-8

文件头的写法:

在文件的首行写:# coding:utf-8 ,代表的是读的编码

pycharm 右下角的编码代表存的编码

保证运行python程序前两个阶段不乱码的方法:

指定文件头

python3的str类型默认直接存成unicode格式,无论如何不会乱码

要保证python2的str不乱码 需要在字符串值前加u

x = u’上’

python2中有两种字符串类型 str、unicode

str会按照文件头的保存类型进行存储str

python
python
License:  CC BY 4.0
Share

Further Reading

Apr 21, 2025

Typing

类型注释让python 有了更好的编辑器提示功能。 基础使用 对函数参数和返回值,进行类型注释 def surface_area_of_cube(edge_length: float) -> str:    return f"The surface area of the cube is {6 *

Feb 25, 2025

python多进程多线程下的计数及日志打印

注意点: 需要保证在多进程内的进程锁是同一个 需要保证在单进程中的多线程内线程锁是同一个 # logger.py import multiprocessing import threading ​ ​ class Logger_test:    def __init__(self, process

Dec 25, 2022

python-迭代器、生成器、协程

迭代器 Python中当容器对象提供了对迭代的支持时,可以通过container.__iter__()来返回一个迭代器对象。 迭代器需要支持以下两个方法,这两个方法共同构成了迭代器协议: iterator.__iter__() 该方法返回迭代器本身,这个方法是配合for和in使用所必须的。 iter

OLDER

4.python基础——流程控制

NEWER

5.python基础——名称空间

Recently Updated

  • 文本切分-语义分割(Semantic Chunking)
  • dify 并发配置优化
  • Typing
  • 大模型返回中json_schema与json_mode的区别
  • Async

Trending Tags

Halo 运维 postgresql 设计模式 linux就该这么学 nas rag odoo python 文本切分

Contents

©2025 刘刚刚的blog. Some rights reserved.

Using the Halo theme Chirpy