【Python基础】--Pickle/函数默认参数/函数的参数*args/Bytes<=>str/32-64bit/bytes对象

2023-11-06

Pickle

>>> import pickle
>>> my_list = [1, 2, 3, 'haha', ['and', 'or']]
>>> pickle_file = open('my_list.pkl', 'wb')
>>> pickle.dump(my_list, pickle_file)
>>> pickle_file.close()
>>> 
>>> 
>>> pickle_file = open('my_list.pkl', 'rb')
>>> my_list2 = pickle.load(pickle_file)
>>> print(my_list2)
[1, 2, 3, 'haha', ['and', 'or']]
>>> 


函数默认参数

>>> def sayWord(name = 'wuyq', word = '快乐学python'):
	print(name + '-->' + word)

	
>>> sayWord()
wuyq-->快乐学python
>>> sayWord('吴英强', '坚持学习,锻炼身体')
吴英强-->坚持学习,锻炼身体
>>> def test(*params):
	print('参数的长度是:',len(params))
	print('第二个参数是:', params[1])

	
>>> test(1, 2, 3, 4)
参数的长度是: 4
第二个参数是: 2
>>> 

函数的参数*args

#coding=utf8
__author__ = 'wuyq'

#当函数的参数不确定时
#*args可以当作可容纳多个变量组成的list或tuple
def fun_var_args(farg, *args):
    print('args: %s'% farg)
    for value in args:
        print('another arg:%s'% value)

fun_var_args(1, 'two', 3, None)

函数的参数**kwargs

def fun_var_kwargs(farg, **kwargs):
    print("args:%s"% farg)
    for key in kwargs:
        print("another keyword arg:%s:%s" %(key, kwargs[key]))

fun_var_kwargs(1, myarg1='two', myarg2=3, myarg3=None)

Bytes<=>str

str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互转化。

>>> b = b'china'
>>> b
b'china'
>>> type(b)
<class 'bytes'>
>>> 
>>> s = b.decode()
>>> s
'china'
>>> bl = s.encode()
>>> bl
b'china'
>>> 

32-64bit

#判断平台是64还是32位
import sys

bits = 0
v = sys.maxsize
while v:
    bits += 1
    v >>= 1
if bits > 32:
    print("64bit")
else:
    print("32bit")
    
#字节序
print(sys.byteorder)

bytes对象

>>> by = b"abcde"
>>> by
b'abcde'
>>> barr = bytearray(by)
>>> barr
bytearray(b'abcde')
>>> barr[0]
97
>>> barr[0] = 98
>>> barr
bytearray(b'bbcde')
>>> 

>>> by = b"abcde"
>>> len(by)
5
>>> by += b"f"
>>> by
b'abcdef'
>>> by[0]
97
>>> by[0] = 98
Traceback (most recent call last):
  File "<pyshell#68>", line 1, in <module>
    by[0] = 98
TypeError: 'bytes' object does not support item assignment
>>> 

不能混用bytesstrings

不能连接bytes对象和字符串。他们两种不同的数据类型。

也不允许针对字符串中bytes对象的出现次数进行计数,因为串里面根本没有bytes。字符串是一系列的字符序列。也许你是想要先把这些字节序列通过某种编码方式进行解码获得字符串,需要显式地指明它。Python 3不会隐含地将bytes转换成字符串,或者进行相反的操作。

>>> by = b"d"
>>> s = "abcde"
>>> by
b'd'
>>> s
'abcde'
>>> by + s
Traceback (most recent call last):
  File "<pyshell#73>", line 1, in <module>
    by + s
TypeError: can't concat bytes to str
>>> s.count(by)
Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    s.count(by)
TypeError: Can't convert 'bytes' object to str implicitly
>>> s.count(by.decode("ascii"))
1
>>> 

>>> a_string = "深入python"
>>> a_string
'深入python'
>>> len(a_string)
8
>>> by = a_string.encode("uft-8")
Traceback (most recent call last):
  File "<pyshell#79>", line 1, in <module>
    by = a_string.encode("uft-8")
LookupError: unknown encoding: uft-8
>>> by = a_string.encode("utf-8")
>>> by
b'\xe6\xb7\xb1\xe5\x85\xa5python'
>>> len(by)
12
>>> by = a_string.encode("gb18030")
>>> by
b'\xc9\xee\xc8\xebpython'
>>> len(by)
10
>>> by = a_string.encode("big5")
>>> by
b'\xb2`\xa4Jpython'
>>> len(by)
10
>>> roundtrip = by.decode("big5")
>>> roundtrip
'深入python'
>>> a_string
'深入python'
>>> a_string = roundtrip
>>> a_string == roundtrip
True
>>> 

















本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python基础】--Pickle/函数默认参数/函数的参数*args/Bytes<=>str/32-64bit/bytes对象 的相关文章

随机推荐

  • 静态方法不能调用非静态方法的原因

    静态方法是属于类的 即静态方法是随着类的加载而加载的 在加载类时 程序就会为静态方法分配内存 而非静态方法是属于对象的 对象是在类加载之后创建的 也就是说静态方法先于对象存在 当你创建一个对象时 程序为其在堆中分配内存 一般是通过this指
  • 蓝桥杯 ADV-202 最长公共子序列

    算法提高 最长公共子序列 时间限制 1 0s 内存限制 256 0MB 问题描述 给定两个字符串 寻找这两个字串之间的最长公共子序列 输入格式 输入两行 分别包含一个字符串 仅含有小写字母 输出格式 最长公共子序列的长度 样例输入 abcd
  • 这恐怕是学习Frida最详细的笔记了

    转载自Sakura的博客 https eternalsakura13 com 2020 07 04 frida title Frida Android hook categories Android逆向 致谢 本篇文章学到的内容来自且完全来
  • video标签播放视频时错误403

    在HTML页面上添加
  • 【机器学习详解】SVM解二分类,多分类,及后验概率输出

    转载请注明出处 http blog csdn net luoshixian099 article details 51073885 CSDN 勿在浮沙筑高台 color Blue CSDN 21247 22312 28014 27801 3
  • Chrony时间同步服务器

    文章目录 一 时间同步基本概念 1 什么是时间同步 2 为什么需要时间同步 3 时间同步是如何完成 二 Chrony时间服务 1 Chrony介绍 2 为何需要Chrony 3 Chrony安装 4 Chrony服务端 5 Chrony客户
  • 安卓手机无需获取root权限安装桌面版Linux操作系统(非常详细,无计算机基础都可以)

    安卓手机无需获取root权限安装桌面版Linux操作系统 首先提醒一下这个教程可能会比较长 而却图片也稍微多了点 但真的很详细很详细 没有计算机基础都可以成功的 由于我学的是计算机方面的专业 所以学习需要经常使用电脑 可我的游戏本又非常的笨
  • OpenWrt的内核启动分析

    u boot从Flash分区中读取Linux内核到内存 然后跳转到内存 某个地址 执行Linux内核 Linux内核会进行一系列验证 根据设备树文件 见下图openwrt target linux realtek dts 5 15 XXX
  • valgrind交叉编译

    编译 autogen sh configure host mips linux gnu CC mips linux gnu gcc CXX mips linux gnu g prefix mnt mmc make make install
  • 信号反射与反弹图那些事

    原文来自公众号 工程师看海 我们总说阻抗不连续会导致信号反射 今天介绍下信号反射的过程与反弹图 如下图所示 对于传输线而言 当信号从左向右传播时 如果走线突然加粗 那么对应的单位长度电感和电位长度电容就会发生变化 使得阻抗突变 Z1 Z2
  • 数据输入及输出显示——JSP实用例子

    例子说明 这例子是学生基本信息的输入以及输出显示 有两个页面 info jsp和showInfo jsp 前者是顾客输入的信息页面 而后者是处理信息的页面 info jsp
  • 考研面试数据库题库

    文章目录 1 什么是数据库 2 数据库管理系统的主要功能是什么 3 什么是数据库系统 4 数据库系统的特点是什么 5 DBA的职责是什么 6 三级模式结构是什么 7 二级映射有什么优点 8 什么是数据库系统的二级映像与数据独立性 9 关系模
  • AIStudio训练模型无反应的解决办法

    问题描述 在AIStudio工作台中 启动环境 按照样例配置好训练集 验证集之后 输入指令 python train py dataset dir data device gpu max seq length 128 model name
  • rbf神经网络预测_城市轨道交通中短期客流预测的深度学习架构

    摘要 短期客流预测是城市轨道交通运营的重要组成部分 兴起的深度学习模型为提高预测精度提供了很好的思路 因此 我们提出了一种结合了残差网络 ResNet 图卷积网络 GCN 和长短期记忆网络 LSTM 简称ResLSTM 的深度学习架构来预测
  • 反转字符串中的元音字母Python解法

    给你一个字符串 s 仅反转字符串中的所有元音字母 并返回结果字符串 元音字母包括 a e i o u 且可能以大小写两种形式出现 例 输入 s hello 输出 holle 解析 字符串中只有元音字母受到条件约束 所以我们只需要将元音字母进
  • RK3588移植opencv(包含opencv_contrib)过程

    后面给大家准备了我自己编译好的 百度云链接 如果有用 麻烦点个赞 1 环境 PC端 Ubuntu 16 04 opencv 版本 3 4 13 编译器 aarch64 linux gnu 工具 cmake 2 源码下载 opencv 3 4
  • dubbo 源码分析-1

    前一篇springCloud 篇幅较长 看起来比较累 这一篇dubbo源码分析 将拆分3篇来分析 1 版本 这里源码是从git 上拉下来的 现在注解用的多 这也是一篇分析注解版本的 2 入口 这是spring 容器启动 回加载Provide
  • makefile文件详解

    1 make是如何工作的 在默认的方式下 也就是只输入make命令 那么 1 make会在当前目录下找名字叫 Makefile 或 makefile 的文件 默认的情况下 make命令会在当前目录下按顺序找寻文件名为 GNUmakefile
  • NTLM及Kerberos认证原理摘录

    目录 NTLM 前言 认证流程 本地认证 NTLM Hash的生成 Kerberos认证 概念 认证流程 编辑Kerberos协议四个角色介绍 KDC的介绍 Kerberos认证 大体分为三个流程 Authentication Servic
  • 【Python基础】--Pickle/函数默认参数/函数的参数*args/Bytes<=>str/32-64bit/bytes对象

    Pickle gt gt gt import pickle gt gt gt my list 1 2 3 haha and or gt gt gt pickle file open my list pkl wb gt gt gt pickl