<commit_before># Python 2.7
# Content
* [基础类型（用法特性）](#基础类型用法特性)
* [str ](#str)
* [list和tuple  ](#list和tuple)
	* [dict和set ](#dict和set)
	* [简单数据类型转换 ](#简单数据类型转换)
	* [判断数据类型](#判断数据类型)
* [流程控制](#流程控制)
* [Standard IO](#standard-io)
	* [Output](#output)
	* [Input](#input)
* [函数](#函数)
	* [空函数](#空函数)
	* [传递参数](#传递参数)
		* [参数类型检查](#参数类型检查)
		* [参数种类](#参数种类)
	* [返回值](#返回值)
* [小技巧](#小技巧)
* [Reference](#reference)


> 注：代码中">>>"标志表示在命令行输入，紧接着无">>>"，表示输出。

# 基础类型（用法特性）
python是弱类型语言（解释型）。

# str 
utf-8用于传输类型，而unicode用于内存和磁盘存储。
```py
# 分段连接字符串，必须加（），否则出错
# TypeError: bad operand type for unary +: 'str'
message = (
      "From: %s\r\n" % fromaddr
      "To: %s\r\n" % toaddrs
      "CC: %s\r\n" % ",".join(cc)
      "Subject: %s\r\n" % message_subject
     + "\r\n" 
     + msg
)
# multiple lines, use "\" to prevent the end of lines
print """\
Usage: thingy [OPTIONS]
    -h
    -H hostname
"""
# operator "+" and "*"
>>> 3*"h" + "a"
'hhha'
# str can be indexed, and a character is a str of size one
>>> word = "Python"
>>> word[0] 
'P'
>>> word[-1]
'n'
```
[匹配替换多个字符方案：](https://stackoverflow.com/questions/3411771/multiple-character-replace-with-python) <br> 
    1. 链式replace();
    2. for循环取匹配字符串，调用replace();
    3. str.maketrans;
    4. 正则表达式，re.compile and re.sub;


# list和tuple  
list是可变数组，而tuple元组，不可变列表。<br>
    - 包含**切片（slice）操作符**，简化获取元素操作(tuple的切片还是tuple)
```py
# L[] = [1,2,3,4,5]，取的范围 x:y => [x,y)
>>> L[0:3]
[1,2,3]
>>> L[1:]
[2,3,4,5]
>>> L[-2:]
[4,5]
>>> L[-2:-1]
[5]
# 每3个取一个
>>> L[::3]
[1,4]
# 字符串支持切片
>>> '123456'[::2]
[1,3,4]
```
    - 列表生成式(List Comprehensions)
```py
# 生成[1*1,2*2,3*3...10*10]
>>> [x*x for x in range(1,11)]
# 筛选偶数
>>> [x*x for x in range(1,11) if x % 2 == 0]
# 全排列 ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
>>> [m + n for m in 'ABC' for n in 'XYZ']
# 多变量<commit_msg>Updates language/python/basic.md<commit_after># Python 2.7
# Content
* [基础类型（用法特性）](#基础类型用法特性)
    * [str ](#str)
    * [list和tuple  ](#list和tuple)
    * [dict和set ](#dict和set)
    * [简单数据类型转换 ](#简单数据类型转换)
	* [判断数据类型](#判断数据类型)
* [流程控制](#流程控制)
* [Standard IO](#standard-io)
	* [Output](#output)
	* [Input](#input)
* [函数](#函数)
	* [空函数](#空函数)
	* [传递参数](#传递参数)
		* [参数类型检查](#参数类型检查)
		* [参数种类](#参数种类)
	* [返回值](#返回值)
* [小技巧](#小技巧)
* [Reference](#reference)


> 注：代码中">>>"标志表示在命令行输入，紧接着无">>>"，表示输出。

# 基础类型（用法特性）
python是弱类型语言（解释型）。

## str 
utf-8用于传输类型，而unicode用于内存和磁盘存储。
```py
# 分段连接字符串，必须加（），否则出错
# TypeError: bad operand type for unary +: 'str'
message = (
      "From: %s\r\n" % fromaddr
      "To: %s\r\n" % toaddrs
      "CC: %s\r\n" % ",".join(cc)
      "Subject: %s\r\n" % message_subject
     + "\r\n" 
     + msg
)
# multiple lines, use "\" to prevent the end of lines
print """\
Usage: thingy [OPTIONS]
    -h
    -H hostname
"""
# operator "+" and "*"
>>> 3*"h" + "a"
'hhha'
# str can be indexed, and a character is a str of size one
>>> word = "Python"
>>> word[0] 
'P'
>>> word[-1]
'n'
```
[匹配替换多个字符方案：](https://stackoverflow.com/questions/3411771/multiple-character-replace-with-python) <br> 
    1. 链式replace();
    2. for循环取匹配字符串，调用replace();
    3. str.maketrans;
    4. 正则表达式，re.compile and re.sub;


## list和tuple  
list是可变数组，而tuple元组，不可变列表。<br>
    - 包含**切片（slice）操作符**，简化获取元素操作(tuple的切片还是tuple)
```py
# L[] = [1,2,3,4,5]，取的范围 x:y => [x,y)
>>> L[0:3]
[1,2,3]
>>> L[1:]
[2,3,4,5]
>>> L[-2:]
[4,5]
>>> L[-2:-1]
[5]
# 每3个取一个
>>> L[::3]
[1,4]
# 字符串支持切片
>>> '123456'[::2]
[1,3,4]
```
    - 列表生成式(List Comprehensions)
```py
# 生成[1*1,2*2,3*3...10*10]
>>> [x*x for x in range(1,11)]
# 筛选偶数
>>> [x*x for x in range(1,11) if x % 2 == 0]
# 全排列 ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
>>> [m + n for m in 'ABC' for n in 'XYZ']
# 多变量
{'fraction_non_alphanumeric': 0.26330150068212826, 'fraction_numerical': 0.03819918144611187, 'mean_word_length': 3.7303225806451614, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 101, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4086797', 'n_tokens_mistral': 2173, 'n_tokens_neox': 2218, 'n_words': 340}