Python 基礎 - bytes數據類型
三元運算
什麼是三元運算?請看下圖說明

透過上圖說明後,可以得出一個三元運算公式: result = 值1 if 條件 else 值2,
- 如果鯈件為真: result = 值1
- 如果鯈件為假: result = 值2
如果不寫三元運算的話,那原本的代碼就會寫的較為冗長,就像下面的代碼
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
a, b, c = 1, 3, 5
if a > b:
d = a
else:
d = c
print(d)
---------------執行結果---------------
5
Process finished with exit code 0
進制
- 二進制 -
01 - 八進制 -
01234567 - 十進制 -
0123456789(我們生活用的就是十進制) - 十六進制 -
0123456789ABCDEF
bytes類型 (字節)
在 Python2 裡,字符串和字節常常傻傻分不清楚,字節可以把它理解為二進制的數據類型,字符串但在 Python3 裡,有一個專門的數據類型,就叫 bytes類型。
Python3 最重要的特性大概算是對文件與二進制數據做了更清楚的區分。文件大都是用 Unicode,由 str類型 表示,二進制數據則由 bytes類型 表示,在 Python3 不會以任意隱式的方式混用 str 和 bytes,也正因為這樣,所以你不能拼接字符串和字節包,也無法在字節包裡搜索字符串(反之亦然),也不能將字符串傳入參數為字節包的函數(反之亦然)。
有沒有一種可能的情況是我的文件是存成二進制的話,那可不可以互相轉換?就像是之前提到過的,字符編碼裡,有 ASCII 、 GB2312 、 GBK 、 GB 18030等,不同的編碼之間不是可以互相轉換的,相對地,就如同 str 跟 bytes 也是可以互相轉換的,請看下圖說明

來簡單手動實驗一下

↑↑↑請觀察輸出結果↑↑↑,那寫在代碼裡,又該怎麼寫呢?

輸出不會出錯,是因為預設已經吃了 utf-8

但建議還是手動自已加上去,避免出錯

輸出結果
我是鋼鐵人
b'\xe6\x88\x91\xe6\x98\xaf\xe9\x8b\xbc\xe9\x90\xb5\xe4\xba\xba'
Process finished with exit code 0
再來試試把它還原回去字符串

輸出結果
我是鋼鐵人
b'\xe6\x88\x91\xe6\x98\xaf\xe9\x8b\xbc\xe9\x90\xb5\xe4\xba\xba'
我是鋼鐵人
Process finished with exit code 0
知識點:
- 什麼叫隱式?隱式就是 Python2 會自動幫你做轉換類型,例如,之前我們使用
int(整數)時,當我們傳入的數值過大時,會自動幫你轉成long(長整數),但在 Python3 中,並不會幫你做這件事,要嘛給你出錯,要嘛就是自已手動執行。 - 在 Python2 裡,是可以互相拼接字符串和字節包,因為它們是一樣的東西。
- 有一種情況下,字符串一定要轉成二進制,在socket網路編程中,網路傳輸都是以二進制傳輸,
在 Python3 中,當所有數據要從A台電腦傳到B台電腦時,都是以二進制傳輸,因此務必要把字符串轉成二進制,而在 Python2 中,因為字符串可以是直接傳輸。
參考資料:
二进制数与十六进制数之间如何互相转换
二、八、十、十六进制转换(图解篇)
Unicode HOWTO
Python 基礎 - bytes數據類型的更多相关文章
- GO語言基礎教程:數據類型,變量,常量
GO類似PHP,每行的結尾要加分號來結束,不同點在於GO對此並不強制,這一點又像javascript,另外GO的語句塊是用一對大括號來包裹的,但是go要求左大括號必須要在語句的結尾處,不能在行首出現左 ...
- Python 基礎 - 數據類型
標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...
- js數據類型
js的數據類型有:字符串.數字.布爾型.數組.undfined.null: js擁有動態類型,同樣的變量可以賦值多個類型: 變量賦值可以聲明后賦值,或者聲明時賦值: 字符串: 字符串用單引號或者雙引號 ...
- Python 基礎 - 字典的操作使用
接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...
- Python 基礎 - 列表的使用
如果想要存所有 Marvel's The Avengers 角色的人名,該如何存呢?請用目前已學到的知識來實做- #!/usr/bin/env python3 # -*- coding:utf-8 - ...
- Python 基礎 - 用戶交互程序
現在就來寫一個簡單的 用戶輸入 的程式,這是一個互動模式,需要使用者自已輸入 #!/usr/bin/env python3 # -*- coding:utf-8 -*- username = inpu ...
- GO語言基礎教程:數組,切片,map
這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間 ...
- Python 基礎 - for流程判斷
今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
随机推荐
- Checkpoint--与lazy writer区别
checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyWri ...
- CentOs 设置静态IP 方法
在做项目时由于局域网采用自动获取IP的方式,导到每次服务器重启主机IP都会变化. 为了解决这个问题,需要设置静态IP. 1.修改网卡配置 编辑:vi /etc/sysconfig/network-sc ...
- linux内核3.4基于wakeup_source的autosleep机制分析
点击打开链接 一:wakeup_source简介: linux 3.4内核PM使用了wakeup_source来保持唤醒状态,也就是keep awake.之前android一直是基于Linux加入了w ...
- Hadoop 2.4.x集群安装配置问题总结
配置文件:/etc/profile export JAVA_HOME=/usr/java/latest export HADOOP_PREFIX=/opt/hadoop-2.4.1 export HA ...
- GZFramwork快速开发框架演练之会员系统(三)添加会员等级管理
1.设计会员等级表结构 创建语句: from sysobjects where id = object_id('tb_MembersLevel') and type = 'U') drop table ...
- GZFramwork快速开发框架之窗体设计说明
1. 明细页数据源获取(基类已经处理) 重载GetEditData方法,此方法为自定义获得明细也的数据源,用于绑定明细页,此返回值会赋值给EditData //根据主键获得数据编辑页的数据 publ ...
- Java与JavaScript的区别
(1)执行方式不同 java:是编译语言,需要先编译再执行 JavaScript:无需编译,直接执行 (2)数据类型不同 java:强数据类型语言 JavaScript:弱数据类型语言 (3)运行位置 ...
- 【OOAD】设计模式概述
模式的诞生与定义 模式起源于建筑业而非软件业模式(Pattern)之父——美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士<A Pattern Langua ...
- iOS MD5加密字符串
参考:http://stackoverflow.com/questions/1524604/md5-algorithm-in-objective-c 在线测试MD5:http://www.cmd5.c ...
- java练习题:输出100以内与7有关的数、百马百担、打分(去掉最高、最低分)、二分法查找数据
1.输出100以内与7有关的数 注: 这些数分为三类:(1)7的倍数,(2)个位数字是7的数,(3)十位数字是7的数 int i=1; System.out.println("输出100以内 ...