A-A+

python之字符串前面加r、f、u、l、->的含义

2022年06月14日 17:54 汪洋大海 暂无评论 共1981字 (阅读57 views次)

1、u:表示unicode字符串

字符串中存在中文的字符,在前面加上u。

其实主要是后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。
a = u'这是一个中文的字符串。'

2、r:表示非转义的原始字符串

字符串中存在\,要让它失效,要在前面加上r。去掉反斜杠的转移机制。

常用于正则表达式,对应着re模块。

(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。 )

print(r'今天是七夕节,\n但是还是要加班!') #加上r就是\不转义
今天是七夕节,\n但是还是要加班!
   
print('今天是七夕节,\t但是还是要加班!')  #不加上r就是\转义
今天是七夕节,	但是还是要加班!

3、f:表示在字符串内支持大括号内的python 表达式

以 f开头表示在字符串内支持大括号内的python 表达式。字符串中存在{},要在前面加上f的。

import time

t = time.time()
time.sleep(1)
name = 'processing'

print('处理时间:',f'{name} done in {time.time() - t:.2f} s')

处理时间: processing done in 1.00 s

4、b:表示此字符串是字节格式,后面字符串是bytes 类型

例: response = b'<h2>Hello World!</h2>'     # b' ' 表示这是一个 bytes 对象
网络编程中,服务器和浏览器只认bytes 类型数据。

如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

附:在 Python3 中,bytes 和 str 的互相转换方式是

str.encode('utf-8')
bytes.decode('utf-8')

5、l:表示宽字符

unicode字符( unicode字符集是两个字节组成的。L告示编译器使用两个字节的 unicode 字符集) 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。

 

不加时占用字节
strlen("asd") = 3; 
 
 加之后占用字节
strlen(L"asd") = 6;

->->常常出现在python函数定义的函数名后面,为函数添加元数据,描述函数的返回类型,从而方便开发人员使用。例如:

def add(x, y) -> int:
  return x+y

 

python -> Optional [str]

Python - typing 模块 —— Optional

前言
typing 是在 python 3.5 才有的模块

前置学习
Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html

常用类型提示
https://www.cnblogs.com/poloyy/p/15150315.html

类型别名
https://www.cnblogs.com/poloyy/p/15153883.html

NewType
https://www.cnblogs.com/poloyy/p/15153886.html

Callable
https://www.cnblogs.com/poloyy/p/15154008.html

TypeVar 泛型
https://www.cnblogs.com/poloyy/p/15154196.html

Any Type
https://www.cnblogs.com/poloyy/p/15158613.html

Union
https://www.cnblogs.com/poloyy/p/15170066.html

Optional 可选类型

和默认参数有什么不一样
官方原话:可选参数具有默认值,具有默认值的可选参数不需要在其类型批注上使用 Optional,因为它是可选的
不过 Optional 和默认参数其实没啥实质上的区别,只是写法不同
使用 Optional 是为了让 IDE 识别到该参数有一个类型提示,可以传指定的类型和 None,且参数是可选非必传的

# 可选参数
def foo(arg: int = 0) -> None:
...


# 不传 arg 默认取 0
foo()

重点
Optional[int] 等价于 Union[int, None]
意味着:既可以传指定的类型 int,也可以传 None
实际栗子

def foo_func(arg: Optional[int] = None):
print(arg)


foo_func()
foo_func(1)


# 输出结果
None
1

使用默认参数的写法

def foo_func(arg: int = None):
print(arg)


foo_func()
foo_func(1)


# 输出结果
None
1

这种写法,Pycharm 并不会 warning

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言