02--Python基础知识②

编码

python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf-8

#!/usr/bin/env python
#coding=utf-8      #或者
# -*- coding: utf-8 -*-

注释

单行注视:#  被注释内容

多行注释:首尾三个单双引号

变量

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
    ['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']
  • 变量必须先被定义和赋值,才可以被使用
  • 变量支持不同数据类型的赋值(如字符串,整数...)

基本数据类型①

整数型(int)

int (整型)

long  (长整型)  注意:在Python3里不再有long类型了,全都是int

>>> wuhm=input()
kkkkkk
>>> print(wuhm)
kkkkkk
>>> type(wuhm)    ### type()是查看数据类型的方法
<class 'str'>

字符串(str)

在Python中,加了引号的字符都被认为是字符串

字符串拼接

数字可以进行加减乘除等运算,字符串也能,但只能进行"相加"和"相乘"运算。注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接

>>> 'abc'+'ABC'
'abcABC'
>>> 'abc'* 3
'abcabcabc'
>>> '='* 5
'====='
>>> 

布尔值(bool)

布尔类型就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断.    非0即真   非空即真

>>> a=1
>>> b=2
>>> a>b
False
>>> a<b
True

浮点数型(float)

Python将带小数点的数字都称为浮点数 。 大多数编程语言都使用了这个术语,小数点可出现在数字的任何位置。 

空值(None)

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型.

脚本传参

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员自己开发的模块

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

[root@VM_0_15_centos py]# cat sys-argv.py
#!/usr/bin/env python
#coding=utf-8
import sys
print(sys.argv[0])          #sys.argv[0] 类似于shell中的$0,但不是脚本名称,而是脚本的相对路径   
print(sys.argv[1])          #sys.argv[1] 表示传入的第一个参数
print(sys.argv[2])          #sys.argv[1] 表示传入的第二个参数
[root@VM_0_15_centos py]# python sys-argv.py   hello   py
sys-argv.py
hello
py

输入参数数量不够会报错

[root@VM_0_15_centos py]# python sys-argv.py hello 
sys-argv.py
hello
Traceback (most recent call last):
  File "sys-argv.py", line 6, in <module>
    print(sys.argv[2])          #sys.argv[1] 表示传入的第二个参数
IndexError: list index out of range 

pyc文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

注:    代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

python2  2.7上执行后直接生成 同名.pyc文件   ,没有_pycache_ 这个目录

 

简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

格式化输出 (占位符)

%s  字符串

%d  整数

%f   浮点数

%    当字符串中存在格式化标志时,需要用 %%表示一个百分号

[root@VM_0_15_centos py]# cat input.py
#!/usr/bin/env python
name = input("Name:")
age = input("Age:")
job = input("Job:")

info = '''
------------ info of %s -----------  
Name  : %s  
Age   : %s  
job   : %s
------------- end -----------------
''' %(name,name,age,job)  # 前面出现几个占位符, 这个% 括号里面就有几个值

print(info)
[root@VM_0_15_centos py]# python input.py
Name:wuhm
Age:18
Job:ops

------------ info of wuhm -----------  
Name  : wuhm  
Age   : 18  
job   : ops
------------- end -----------------

 把上面Age后面的换成%d 数字占位符

[root@VM_0_15_centos py]# cat input.py
#!/usr/bin/env python
name = input("Name:")
age = input("Age:")
job = input("Job:")

info = '''
------------ info of %s -----------  
Name  : %s
Age   : %d
job   : %s
------------- end -----------------
''' %(name,name,age,job)  # 前面出现几个占位符, 这个% 括号里面就有几个值

print(info)
[root@VM_0_15_centos py]# python input.py
Name:wuhm
Age:18
Job:ops
Traceback (most recent call last):
  File "input.py", line 12, in <module>
    ''' %(name,name,age,job)  # 前面出现几个占位符, 这个% 括号里面就有几个值
TypeError: %d format: a number is required, not str

运行后报错:   需要一个数字,而不是str 字符串     ###  因为input接收的所有输入默认都是字符串格式

查看下数据类型   type()

#!/usr/bin/env python
name = input("Name:")
age = input("Age:")
print(type(age))
job = input("Job:")
[root@VM_0_15_centos py]# python input.py
Name:wuhm
Age:18
<class 'str'>
Job:ops

怎么把 str 转成 int

name = input("Name:")
age = int(input("Age:"))
print(type(age))
job = input("Job:")

再次运行

[root@VM_0_15_centos py]# python input.py
Name:wuhm
Age:18
<class 'int'>
Job:ops

------------ info of wuhm -----------  
Name  : wuhm
Age   : 18
job   : ops
------------- end -----------------

基础其他

一、bytes类型

 

二、进制

 

三、三元运算

result = 1 if 条件 else 2

如果条件为真:result = 值1
如果条件为假:result = 值2

 

、一切皆对象

 

posted @ 2018-10-19 13:44  mingetty  阅读(154)  评论(0)    收藏  举报