02-数据类型-input-print-import-命令行参数

AffettoIris 2023-2-13 2,717 2/13

1.数字(Number)类型

python中数字有四种类型:整数int、布尔型bool、浮点数float和复数complex(如1 + 2i)

2. 字符串(String)

  1. python字符串不区分单双引号

  2. 使用三引号(''' 或 """)可以指定一个多行字符串,这也是注释符的原理。

    str = '''1
    2
    3'''
    print(str) 输出1\n2\n3
  3. 转义符 \

  4. 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
    print("this " + "is " + "string") # this is string
    print("q" * 3) # qqq
  5. print("apple"[0]) # a
    print("apple"[-1]) # e
  6. python中字符串是不可变类型,即无法直接修改字符串的某一位字符。

    str = 'apple'
    str = 'qwe' # 这是OK的,因为你变得是变量的赋值。
    str[0] = 'p' # 你在篡改字符串'qwe':TypeError: 'str' object does not support item assignment
  7. Python 没有单独的char型,一个字符就是长度为 1 的字符串

  8. 字符串的截取的语法格式如下:变量[从哪:取不到哪:步长]

    str = '0123456789'
    print(str[1:5:2]) # 13
    print(str[2:5]) # 234
    print(str[5:]) # 56789

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

等待用户输入

str = input("\n\n按下 enter 键后退出。")
print(str)

当我输入123然后按下enter,输出123

同一行显示多条语句

Python 可以在同一行中使用多条语句,语句之间使用分号 ; 分割

str = input("\n\n按下 enter 键后退出。"); print(str)

代码块

缩进是相同的一组语句构成一个代码块,我们称之代码组。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。我们将首行及后面的代码组称为一个子句(clause)。

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

print 不换行输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

print('qwe', end = '')
print('asd') # qweasd\n
print('an', end = 'apple') # anapple

import 与 from...import

  • 将整个模块(somemodule)导入,格式为: import somemodule

  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction

  • 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

  • 将某个模块中的全部函数导入,格式为: from somemodule import *

len()

print(len('qwe')) # 3
print(len([1, 2, 3])) # 3
# 准确地说,字符串 元组 列表 集合 字典都能测长度

命令行参数

类似python -V,我们自己写的脚本也可以带入命令行参数,像python sqlmap -u "url"这样,格式如下:

$ python test.py arg1 arg2 arg3 # 参数支持短选项模式 - 和长选项模式 --。
  1. Python 可以所用 syssys.argv 来获取命令行参数。

cmd输入python test.py -e
import sys
print(sys.argv) # ['test.py', '-e'] # 可见sys.argv从命令的脚本名开始截取到末尾,返回列表
print(sys.argv[1]) # -e
print(len(sys.argv)) # 2
print(sys.argv[2]) # IndexError: list index out of range
  1. 也可以用 getopt 模块(译:得到选项)来获取命令行参数。sys和getopt应搭配使用。附:getopt是一个非常容易入门的命令行工具,函数少,适合轻量的Python命令行交互工具的开发。若项目大型一点,还是推荐使用 optparse。毕竟官方也说了嘛:

getopt.getopt(sys.argv[1:], options[, long_options])
# 参数一是要解析的命令行参数列表。参数二是一个字符串,由短选项组成,(短选项仅一个单词长),短选项后缀冒号 : 表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。例如'iuh:'或者'-i-u-h:'。参数三是列表,长选项后缀=表示如果设置该选项,必须有附加的参数,否则就不附加参数
# 返回值是([(option1, value1) ,(option2, value2) ,...], [par1, par2])
# 函数会从参数一中逐个匹配参数二列举的单个单词,若匹配到,再看单词是否必须有附加的参数即冒号,然后将这样一组结果以元组形式放入 返回值[0]中。而返回值[1]是那些没有 - 或 -- 的参数组成的列表。
print(getopt.getopt(sys.argv[1:], '-i-u-h:')) 
# 当cmd输入python .\1.py  -i -h '123' '456' '789',(因为是匹配,所以-i -h顺序随便,但是长短选项一定要在无选项参数之前,例如python 1.py '123' -i是错的,函数看到无选项会以为已经含选项已经over了。)
# 输出([('-i', ''), ('-h', '123')], ['456', '789'])
# 上行函数会在参数一中匹配‘i’ 'u' 'h',匹配到'i' 'h',
# ‘i’不带参数,故('-i', ''),'h'带参数,故('-h', '123')
# 余下'456' '789',放入 返回值[1]

# 当cmd输入python .\1.py  -i -o -h '123' '456' '789' 
# 报错:getopt.GetoptError: option -o not recognized
# 然后短选项模式也就26个字母,短选项短导致意义模棱两可,且少导致不够用。长选项就很不错。
print(getopt.getopt(sys.argv[1:], '-i-u-h:', ['name=', 'pwd'])) 
# cmd输入python .\1.py  -i  -h  '123' --name 'iris' -u --pwd '456' '789'
# 输出([('-i', ''), ('-h', '123'), ('--name', 'iris'), ('-u', ''), ('--pwd', '')], ['456', '789'])

# 如果你把输入删去'iris',你会得到
# ([('-i', ''), ('-h', '123'), ('--name', '-u'), ('--pwd', '')], ['456', '789'])

sys.exit()

通过引发SystemExit异常来退出Python程序。

- THE END -

AffettoIris

10月16日15:56

最后修改:2023年10月16日
0

共有 0 条评论