三元運算

什麼是三元運算?請看下圖說明

透過上圖說明後,可以得出一個三元運算公式: 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 不會以任意隱式的方式混用 strbytes,也正因為這樣,所以你不能拼接字符串和字節包,也無法在字節包裡搜索字符串(反之亦然),也不能將字符串傳入參數為字節包的函數(反之亦然)。

有沒有一種可能的情況是我的文件是存成二進制的話,那可不可以互相轉換?就像是之前提到過的,字符編碼裡,有 ASCIIGB2312GBKGB 18030等,不同的編碼之間不是可以互相轉換的,相對地,就如同 strbytes 也是可以互相轉換的,請看下圖說明

來簡單手動實驗一下

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

輸出不會出錯,是因為預設已經吃了 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數據類型的更多相关文章

  1. GO語言基礎教程:數據類型,變量,常量

    GO類似PHP,每行的結尾要加分號來結束,不同點在於GO對此並不強制,這一點又像javascript,另外GO的語句塊是用一對大括號來包裹的,但是go要求左大括號必須要在語句的結尾處,不能在行首出現左 ...

  2. Python 基礎 - 數據類型

    標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...

  3. js數據類型

    js的數據類型有:字符串.數字.布爾型.數組.undfined.null: js擁有動態類型,同樣的變量可以賦值多個類型: 變量賦值可以聲明后賦值,或者聲明時賦值: 字符串: 字符串用單引號或者雙引號 ...

  4. Python 基礎 - 字典的操作使用

    接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...

  5. Python 基礎 - 列表的使用

    如果想要存所有 Marvel's The Avengers 角色的人名,該如何存呢?請用目前已學到的知識來實做- #!/usr/bin/env python3 # -*- coding:utf-8 - ...

  6. Python 基礎 - 用戶交互程序

    現在就來寫一個簡單的 用戶輸入 的程式,這是一個互動模式,需要使用者自已輸入 #!/usr/bin/env python3 # -*- coding:utf-8 -*- username = inpu ...

  7. GO語言基礎教程:數組,切片,map

    這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間 ...

  8. Python 基礎 - for流程判斷

    今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...

  9. Python 基礎 - if else流程判斷

    hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...

随机推荐

  1. 使用GIt向github上传代码

    github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说公共仓库就已经足够了. 1.注册账户以及创建仓库     要想 ...

  2. 离线安装Cloudera Manager 5和CDH5(最新版5.1.3) 完全教程

    关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...

  3. Linux文件管理相关命令

    Linux文件管理相关命令   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux文件管理背景知识之后, 我们可以 ...

  4. maven环境快速搭建

    ----------------准备工作------------- Jdk  1.5以上java开发环境. Eclipse IDE 一个. Maven 3.0.3下载地址: http://maven. ...

  5. ios下移除原生样式

    之前遇到过这个问题,今天无意中在网上看见博文 记录一下. 设置这个就好: -webkit-appearance : none ;

  6. 《BI项目笔记》历年理化指标分析Cube的建立

    该系统属于数据仓库系统,与传统的管理信息系统有本质差别,是“面向主题”设计的.“面向主题”的方式,既有利于数据组织和利用,又有利于用户的理解和使用. 分析主题主要维度:烟叶级别.烟叶级别按等级信息.烟 ...

  7. DuiLib 自定义识别控件

    遇到一个断点无法识别自定义的控件,运气比较好,一搜就搜出来了: 参考地址:http://www.bkjia.com/ASPjc/992050.html 主要是这个函数: CControlUI* CDi ...

  8. dubbo配置文件xml校验报错

    配置dubbo服务xml后,程序能正常执行,但validate会出现一些异常: Multiple annotations found at this line: - cvc-complex-type. ...

  9. Spring Boot工程发布到Docker

    先聊聊闲话 搞过企业级的application运维的同仁肯定深有感触,每个application的功能交叉错杂,数据交换就让人焦头烂额(当然这和顶层业务设计有关系), 几十个application发布 ...

  10. lr各种问题以及解决办法

    LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen.exe文件 遇到flight界面为空的解决 ...