这篇主要是讲一些比较深入的东西,偶尔才会碰到一次的东西,基本上是按照我现在碰到的机率由高至低排序的。
在 Python 中有关类别、函数以及变数的名称并没有限制如何命名,但是按照规则命名会更快更容易解读 code,尤其是遇到较大型的专案时。基本规则如下:
一定要遵守的:
要注意的:
推荐的方式:
类型 | 方式 | 范例 |
---|---|---|
Local variable | 一律小写,文字串接的时候使用下底线 | val_name = 123 |
Globals(全域变数), Constants(常数) | 一律大写 | PI=3.14 |
function(函数) | 一律小写,文字串接的时候使用下底线 | def add(): |
Class(类别) | 单字开头第一个字大写,其余小写,文字串接不使用下底线 | ClassName |
Module(模组), Package(套件) | 一律小写(J些下下下一篇会讲到) | module.py |
range(start, end, step),最少要有 end 。如果只输入两个数字,那两个会是 start 跟 end。
如果一个字串中有需要插入较多的变数,要组合在一起就比较麻烦,例如:
''' Input '''
name = 'ithome'
year = 2021
month = 9
day = 4
weight = 58.5
height = 163
print('My name: ' + name + '\nToday: ' + str(year) + '/' + str(month) + '/' + str(day) + '\nMy height: ' + str(height) + '\nMy weight: ' + str(weight))
''' Output '''
My name: ithome
Today: 2021/9/3
My height: 163
My weight: 58.5
像这样要组合起来就比较麻烦,不过 Python 中提供了一个方便好用的字串格式化方式 .format()
,可以将字串中要带入值得位置用大括号括起来,然後再 format()
的小括号中填入想要的值。例如:
''' Input '''
name = 'ithome'
year = 2021
month = 9
day = 3
weight = 58.5
height = 163
print('My name:{}'.format(name))
print('Today:{y}/{m}/{d}'.format(y=year, m=month, d=day))
print('My height:{1:>6d}\nMy weight:{0:>6.2f}'.format(weight, height))
''' Output '''
My name:ithome
Today:2021/9/3
My height: 163
My weight: 58.50
知道後可已用得更顺手的东西:
:
前面可以使用索引值或 key-value 进行取值,後面可以加格式化方式,也可都不使用。{:<}
, {:^}
, {:>}
是左、中、右对齐。{:+}
表示带正负号。My height
){:d}
、 {:f}
、 {:e} or {:E}
、 {:x} or {:X}
、 {:o}
、 {:b}
分别是整数、浮点数、科学记号(大小写)、十六进位(大小写)、八进位、二进位{:,}
的方式以逗号分隔数字(千分位) ex: print('{:,}'.format(123456)) # 123,456
{:%}
输出百分比(自动乘100) ex: print('{:.0%}'.format(0.3)) # 30%
{:%?}
的方式输出日期时间,有 * 表示根据地区会有不同的输出,例如:
%a
星期缩写%A
星期全写%w
星期数字%d
日期%b
月份缩写 *
%B
月份全写 *
%m
月份数字%y
西元年二位数字%Y
西元年四位数字%H
24小时制%I
12小时制%p
AM 或 PM *
%M
分%S
秒%f
微秒六位数字%c
日期和时间 *
%x
日期 *
%X
时间 *
u -> unicode (会处理跳脱字元) | Python 预设字串编码方式
r -> 非转义原生字元 (不会处理跳脱字元)
b -> bytes位元组
f -> 在字串内支援大括号内的 Python 表示式 (就是指第四点)
''' 如果这样输入 '''
name = 'ithome'
str_default = 'Hello {name} \n Welcome'
str_u = u'Hello {name} \n Welcome'
str_r = r'Hello {name} \n Welcome'
str_b = b'Hello {name} \n Welcome'
str_f = f'Hello {name} \n Welcome'
''' 每个输出就会像这样 '''
# Input
print(str_default)
# Output
Hello {name}
Welcome
# Input
print(str_u)
# Output
Hello {name}
Welcome
# Input
print(str_r)
# Output
Hello {name} \n Welcome
# Input
print(str_b)
# Output
b'Hello {name} \n Welcome'
# Input
print(str_f)
# Output
Hello ithome
Welcome
bytes 这边可能看不太出来,搭配第六点看会更清楚。
:::info
常用跳脱字元
字元 | 意义 |
---|---|
\\ | 反斜线 \ |
\' | 单引号 ' |
\" | 双引号 " |
\b | 空格(BS) |
\n | 换⾏(LF) |
\r | 回车(CR) |
\t | 水平缩排(TAB) |
\f | 换页(FF) |
0o?? | 8进位(数字零跟英文小写O) |
0x?? | 16进位(数字零跟英文小写X) |
:::
在 Python 中 str 预设是使用 unicode 进行资料处理的。不过在某些情况,需要将 unicode 转换为其他格式,所以就需要使用到编解码。
s = '你好'
# Input
print(s.encode('utf-8'))
# Output
b'\xe4\xbd\xa0\xe5\xa5\xbd'
# Input
print(s.encode('big5'))
# Output
b'\xa7A\xa6n'
那麽进阶的就大概这样,主要是可以将常用的东西中,处理起来比较麻烦的东西简单处理掉的部分。
大家掰~掰~
<<: 冒险村04 - Create PR with default template
读取表单中的所有资料 接下来的步骤将把 todo 表单中的资料取出展示在 Dashboard 上。 ...
一日客语:中文:不好意思 客语:paiˇse! ㄆㄞˇ 厶ㄟ 1.set 是一个集合 2.集合没有索...
物件导向程序设计是程序设计中极为重要的一环,其基本概念为物件及类别。 类别定义事物的特点,物件为事件...
本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...