Python基本用法

本文介绍了Python编程的基础知识,包括两种编程模式:交互模式和脚本模式,以及如何在Python中定义和使用标识符。详细讨论了行和缩进的重要性,特别是Python中使用空行、多行语句和续行符的方式。此外,还涵盖了引号和注释的用法,以及如何通过input()函数读取用户输入。最后,文章提到了Python模块、命令行参数和文件类型的概念。
摘要由CSDN通过智能技术生成

一、编程模式

1.1 交互模式编程

调用解释器不经过脚本文件作为参数,显示以下提示:

[root@localhost python]# python3
Python 3.6.8 (default, Apr 16 2020, 01:36:27) 
[GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

键入下列文字在Python提示符,然后按Enter键:
>>> print("Hello, Python!") 
	Hello, Python!          

Python代码在执行时默认会动态加载一些内置库builtins.py。

1.2 脚本模式编程

调用解释器及脚本作为参数,并开始执行脚本
写如下代码在一个test.py文件:

# vim test.py
print("Hello, Python!")

运行程序:

  • 方式1:使用python3.6来执行脚本(可以不加x权限)

    # python3.6 test.py
    Hello, Python!
    
  • 方式2:使用路径方式来执行脚本(需赋予x权限)

    # chmod +x test.py     
    # ./test.py
    Hello, Python!
    

二、Python标识符

2.1 作用

  • 用来标识一个变量,函数,类,模块或其他对象的名称。
  • 一个标识符开始以字母A到Z或a到z后跟零个或多个字母下划线(_)和数字(0〜9)。
  • Python标识符内不允许标点符号,如@、$、%等。
  • Python区分大小写。

2.2 标识符命名约定

一句话:只能由数字,字母和下划线组成,不能以数字开头

  • 类名以大写字母以及所有其它标识符以小写字母。
  • 开头单个前导下划线的标识符表示由该标识符约定的意思是私有的,避免用下划线作为变量名的开始。
  • 开头两个前导下划线的标识符表示一个强烈的私有的标识符。
  • 如果标识符末尾还具有两个下划线结束时,该标识符是一个语言定义的特殊名称。

2.3 保留字

记住keyword模块就完事了。

  • bash: if for 等关键字可以当作标识名称;
  • python: if for 等关键字不能当作标识名称。

保留字不可以被用作常量或变量,或任何其它标识符。所有Python关键字只包含小写字母。

(1)查看shell中的保留字

查询shell中所有关键字的方法为:man bash。

(2)查询当前版本python中所有关键字

>>> import keyword   #如果系统中没有这个模块,需要安装python-docs
>>> keyword.kwlist   #查看关键列表
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

(3)判断是否为关键字

>>> keyword.iskeyword ('False')
此时将返回True    

三、行和缩进

一个程序员学习Python时,遇到的第一个需要注意的地方是,不使用括号来表示代码的类和函数定义块或流程控制。代码块是由行缩进,这是严格执行表示方式。**缩进位数目是可变的,但在块中的所有语句必须缩进相同的量。**在这个例子中,两个功能块都很好使用:

if True:
    print ("True")
else:
  print ("False")

然而,在本实例中的第二块将产生一个错误:

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")   # 需要同级别缩进

3.1 使用空行

一行只含有空格,可能带有注释,如果是空行那么Python完全忽略它。在交互式解释器会话中,必须输入一个空的物理行终止多行语句。

3.2 多行语句

Python语句通常用一个新行结束。 但是,Python允许使用续行符\来表示该行应该继续下去(跨行)。但是包含在[],{},()括号内的陈述并不需要使用续行符\
​例如:

>>> total = (item_one + 
        item_two + 
        item_three)
>>> days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

3.3 续行符( \ )

Python 语句一般使用换行分隔,也就是说一行一个语句。一行过长的语句可以使用反斜杠\分解成几行。

例如:

# check conditions
if (weather_is_hot == 1) and \
(shark_warnings == 0):
     send_goto_beach_mesg_to_pager()

单行中多条语句

分号( ; ) 允许在单行写入多条语句,不管语句是否启动一个新的代码块。下面是使用分号示例:

import sys; x = 'foo'; sys.stdout.write(x + '')

四、引号和注释

在Python中单引和双引作用相同,引号引起的为字符串,否则为变量。

4.1 引号

Python接受单引号(‘),双引号(")和三(’''或"“”)引用,以表示字符串常量,只要是同一类型的引号开始和结束的字符串。
三重引号可以用于跨越多个行的字符串。
例如,所有下列写法都是合法的:

word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

4.2 注释

"#"号之后字符是注释的一部分,Python解释器会忽略它们。

#!/usr/bin/python3.6
# First comment
print "Hello, Python!"  # second comment
运行结果:
Hello, Python!

可以使用三引号完成多行注释:

'''
comment1
comment2
''''

五、读取用户输入

Python提供内置函数从标准输入读入一行文本,默认的标准输入设备是键盘:input()

Python3.xraw_input( )input( ) 进行了整合,去除了 raw_input( ),仅保留了 input( ) 函数,其接收任意输入,将所有输入默认为字符串处理,并返回字符串类型。

5.1 input函数

input([prompt]) 函数从标准输入读取一个行,并返回一个字符串

#!/usr/bin/python3.6
str = input("请输入:")
print("你输入的内容是: ", str) 

执行结果: 
请输入:Hello Python!
你输入的内容是:  Hello Python!

实例:等待用户
程序显示提示,按回车键退出,等待用户按下回车键:

#!/usr/bin/python3.6
input("Press the enter key to exit.")   #不接收用户输入
在这里,一旦用户按下键时,程序结束。这是一个很好的技巧,保持一个控制台窗口打开,直到用户完成应用程序运行。

5.2 输入不可见密码

输入密码时,如果想要不可见,需要利用 getpass 模块中的 getpass 方法:

#!/usr/bin/env python3.6
import getpass   #导入getpass模块
pwd = getpass.getpass("请输入密码:")   # 将用户输入的内容赋值给 pwd变量   模块.方法(函数)
print(pwd)   # 打印输入的内容

执行结果:
请输入密码:
123

六、模块

  • 模块以磁盘文件的形式存在,每一个 Python 脚本文件都可以被当成是一个模块。
  • 当一个模块变得过大,且驱动了太多功能时就应该考虑拆一些代码出来另外建一个模块。
  • 模块代码可以是一段直接执行的脚本, 也可以是一堆类似库函数的代码, 从而可以被别的模块import调用。
  • 模块可以包含直接运行的代码块、类定义、 函数定义或这几者的组合。

七、命令行参数

  • 和shell脚本类似
  • 程序可以运行时提供有关如何运行的一些基本信息。
  • 例如Python中可以使用 -h 做到这一点:
# python3.6 -h
usage: python3.6 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_instance)
         and comparing bytes/bytearray with str. (-bb: issue errors)
-B     : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
-h     : print this help message and exit (also --help)
...
...

你也可以设定你的脚本,它应该以这样的方式接受各种选项。 命令行参数会在以后学习,当你学会其它的Python概念之后如果想对python脚本传参数,需要模块:sys 或者 getopt。

sys模块

用法意义
len(sys.argv)参数个数
sys.argv[0]脚本名
sys.argv[1]第一个参数1
sys.argv[2]第二个参数2
# vim test.py
import sys
print("脚本名:",sys.argv[0])
for i in range(1,len(sys.argv)):
    print("参数",i,sys.argv[i])

# python3.6 test.py hello world
脚本名:test.py
参数 1 hello
参数 2 world

python参数解包(unpack):

[root@zrs python]# cat unpack.py 
#!/usr/bin/env python3.6
from sys import argv
script, first, second, third = argv
print(argv)
print(script)
print(first)
print(second)
print(third)

[root@zrs python]# python3.6 unpack.py 1 2 3
['unpack.py', '1', '2', '3']
unpack.py
1
2
3

代码script,first,second,third=argv 表示将argv “解包(unpack)”,argv本身是将所有参数放到同一个变量下面,这里是将每个参数赋予一个变量名:script、first、second 以及 third。

这看上去有些奇怪, 不过" 解包" 可能是最好的描述方式了。它的含义很简单:“把argv 中的东西解包,将所有的参数依次赋予左边的变量名”。

八、Python文件类型

python常用的有3种文件类型:

  • 源代码:py
  • 字节代码:pyc
  • 优化代码:pyo

8.1 源代码

python源代码的文件以"py"为扩展名,由python程序解释,不需要编译。

8.2 字节代码

需要py_compile模块

python源文件经编译后生成的扩展名为"pyc"的文件,用于隐藏代码,提高加载速度

(1)什么是pyc文件?

pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。

因为py文件是可以直接看到源码的,如果你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。当然,pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同的,根据python源码中提供的opcode,可以根据pyc文件反编译出py文件源码,网上可以找到一个反编译python2.3版本的pyc文件的工具,不过该工具从python2.4开始就要收费了,如果需要反编译出新版本的pyc文件的话,就需要自己动手了,不过你可以自己修改python的源代码中的opcode文件,重新编译python,从而防止不法分子的破解。

(2)pyc编译方法

  • 生成单个pyc文件:

    方法1:代码方式
    #vim  compile.py         
    #!/usr/bin/env python3.6
    import py_compile   #导入模块
    py_compile.compile("hello.py")   #括号里写源代码文件(py)
    
    方法2:命令行
    #python3.6  -m  py_compile  hello.py
    -m  相当于脚本中的import
    

    注意
    字节代码和优化代码不能直接执行,只能用解释器运行
    正确执行方法:
    #python hello.pyc
    #python hello.pyo
    错误执行方法:
    #./hello.pyc //这样执行会报错

  • 批量生成pyc文件:

    需要compileall模块

    一般,工程都是在一个目录下的,不会仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python提供了另一个模块:compileall 。使用方法如下:

    方法1:代码方式
    import compileall
    compileall.compile_dir(r'/root/src')   # 将src文件夹下的所有py文件都编译为pyc文件
    
    方法2:命令行方式
    # python3.6 -m compileall /root/src/
    

8.3 优化代码

pyo是经过优化编译后的程序,扩展名为"pyo",也可以提高加载速度,针对嵌入式系统,把需要的模块编译成pyo文件可减少容量,本质上和pyc没有区别,优化方法如下:

# python -O -m py_compile hello.py

字节代码(pyc)、优化代码(pyo)与源代码(py)相比特点:

(1)隐藏源代码;

(2)提高代码加载速度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值