Python基础之基础知识

Python基础知识

编写第一个代码HelloWorld

#编辑.py文件并运行
[root@xmh ~]# echo "print('Hello World')" > hello.py
[root@xmh ~]# python3 hello.py
Hello World

#python3交互器运行(主要用于代码调试)
[root@xmh ~]# python3
>>> print ('Hello World')
Hello World

提示:文件的后缀名不会影响python的运行,仅仅是给人看的

Linux下直接执行

#声明语言解释器
[root@xmh PyProjects]# cat HelloWorld.py 
#!/usr/local/bin/python3
print("Hello,World")

#添加"可执行"权限
[root@xmh PyProjects]# chmod +x HelloWorld.py

#./ 运行
[root@xmh PyProjects]# ./HelloWorld.py 
Hello,World

python程序执行的三个阶段:python3 /root/test.py
1、先启动python解释器
2、python解释器就相当于一个文本编辑器将test.py的内容当做普通的文本文件加载到内存
3、python解释器解释执行刚刚读入内存的代码,开始识别python的语法,根据不同的语法做相应的逻辑操作

注意:末尾的.py表示它是一个Python程序(规范)

Python 变量

变量的概念基本上和初中代数的方程变量是一致的,就是可变化的量(数值),只是在计算机程序中,变量不仅可以是数字、字符,还可以是任意数据类型,每个变量都存储了一个值

那么在编程语言里为何要有变量,是为了让计算机能够跟像人一样记下来事物的特征并且可以修改

通俗来说:变量就是用来存放东西的,这东西可以是数字、字符等数据类型,方便后面被调用

画外音:

量:记录现实世界中事务的某种状态
变:记录的状态是会发生变化的

1.变量基本操作
变量定义分为三部分:

变量名=值
1、变量名
3、= 赋值
2、变量值:代指记录的状态,即存储的数据

//定义变量
name = "xmh"    #字符串类型
number = 123    #数字类型

//调用变量(,逗号用于区分不同的变量)
print("My name is",name,"Number is",number)

//变量之间赋值
name = "xmh"    
name2 = name    #把变量name的值赋值给变量name2
print("My name is",name,name2)

注意:变量name赋值给name2,其实是将name对应的值"xmh"赋值给了name2,而不是说name2等于name这个变量

2.变量名定义规范
必须能反映出值所表示的状态

//驼峰体(在python中不推荐使用该方式)
NumberOfStudents = 80

//下划线(Python官方建议)
number_of_students = 80

//这样也可以
_Number = 80

//以下错误的定义(避免使用中文和拼音)
姓名 = "xmh"
xingming = "xmh"

变量定义规范:

  • 变量名只能是字母、数字或下划线的任意组合,不能有特殊字符
  • 变量名的第一个字符不能是数字,而且不能使用空格
  • 变量名尽量不要使用中文、拼音,避免名字过长和名称不达意
  • 以为下关键字不能声明为变量名
    ['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']
  • 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0

3.变量定义案例

//运算案例
[root@xmh ~]# cat hello.py
eat = 6+10+11+3+46+80
cloth = 20
total = eat + cloth
print("总数",total)
[root@xmh ~]# python3 hello.py
总数 176

Python常量
常量即不变的量,如pai 3.23214415677...,或在程序运行过程中不会改变的量,在Python中没有一个专门的语法代表常见,那么程序员约定俗成用变量名全部大写代表常量

//常量名大写
AGE_OF_XMH = 20

Python变量内存管理
只要定了变量,那么变量的值会在内存中开辟一块内存空间去存放,而变量名即是门牌号,指向的是内存地址,那么当一个值(内存地址)引用计数少于0,就会被python解释器自动回收

定义变量其实就是申请内存空间,而自动回收内存地址由python解释器自动完成,不需要程序员手工回收

age=18  # 18的引用为1
age1=age # 18的引用为2

del age # 18的引用变为了1,即解除引用计数
age = 19 # age重新引用到19的内存地址,这时18的引用计数为0,会被自动回收

小整数池

#1、在交互式模式下
Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收

每创建一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
>>> y=4
>>> id(y)
>>> 
>>> x=3
>>> x+=1
>>> id(x)

#在pycharm中
但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究

变量值三个特征:
1、id:变量值在内存中的身份证号,id相同则内存地址相同
2、type:类型
3、value:记录的特征

age=18
print(id(age))  #查看值的id
print(type(age)) #查看值的类型

Python 字符编码

python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascill)

各个国家都自己开发了编码,不统一!

  • GB2312,又称国际码,通行于大陆,包含6793个汉字和682个其它符号
  • GBK1.0,能够给用来表示繁体字和简体字(包括中日韩文里所有汉字),分为汉字和图形符号,收录了21886个符号,21003个字符
  • GBK108030,是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数名族文字,现在的PC必须支持GBK108030,对嵌入式产品暂时不做要求,所以手机、MP3一般只支持GB2312
  • BIG5,台湾地区繁体中文

每个国家都有自己的一套编码标准,那么就会导致使用这套编码软件的出口到其它国家,由于没有装编码,就会导致乱码,为了解决每个国家不同编码间不互通的问题这时,IOS标准组织出马了!

  • Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码(统一码,万国码),规定所有的字符和符号最少由16位来表示(即2字节),即:2 ** 16 = 65535

  • UTF-8:可变长的字符集,是对Unicode编码的压缩和优化,它不再使用最少2个字节,而是将所有的字符和符号进行分类,①ascii码中的内容用1个字节保存、②欧洲的字节用2个字节保存、③东亚的字符用3个字节保存...

ASCII表:

ASCII一个字符只占一个字节

操作系统编码:

1、windows系统中文版 默认编码是GBK
2、MAC OS\Linux 默认编码是 UTF-8

Python中声明使用编码类型

//在代码最开头添加
# -*- coding:utf-8 -*-

Python 二进制

二进制在计算机中代表数字,代码0和1表示二进制二进制的第n位代表的十进制都刚好遵循着2的n次方这个规律

#将十进制转换成二进制 
>>> bin(342)
'0b101010110'

计算机如何把二进制转换成文字

计算机的存储单位:

每一个0或者1所占的空间单位为bit(比特),这是计算机最小的标识空间
8bit=1Bytes 字节
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB
1ZB=1024EB
1YB=1024ZB
1BB=1025YB

Python 十六进制

二级制: 01
八进制:01234567
十进制:0123456789
十六进制:0123456789ABCDEF

十进制转8、16进制语法

oct(8)  #8进制
hex(15) #16进制

16进制的用法
1、网络编程、数据交换的时候需要对字节进行解释都是一个byte一个byte的处理,1个byte可以用OxFF两个16进制来表达。通过网络抓包,可以看到数据都是通过16进制传输的。
2、数据存储,存储到硬件中是0101的方式,存储到系统中表达方式都是byte方式
3、一些常用值的定义,比如:我们经常用到html中color表达,就是用16进制的方式,4个16进制位可以表达好几万白的颜色信息

十六进制转二进制的方法

Python bytes

在Python3以后,字符串和bytes类型彻底分开了。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。

msg = "我爱北京天安门"
print(msg.encode("utf-8"))
print(msg.encode("utf-8").decode(encoding="utf-8"))

Python 注释

单行代码注释用#,多行注释用""" """或者''' ''',不用全部代码都加注释,只需要在自己觉得重要或不好理解的部分加注释即可,注释可以用中文或者英文,但绝对不要用拼音

//单行注释
#name = "你好,世界"
#print(name)

//多行注释
"""
name = "你好,世界"
"""
提示:双引号或者双引号可作为多行内容输出

Python 用户输入

input会将所有用户输入的值,转成字符串类型

username = input("username:")
password = input("password:")

print(username,password)

//默认情况下用户输入的数字会被当成字符串处理
//将字符串转为数字
age = int (input("Age:"))  #integer

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

import getpass

username = input("username:")
password = getpass.getpass("password:")

print(username,password)

Python 格式化输出

占位符种类:

%s,s=string,表示万能的字符串类型
%d,d=digit,表示数字类型
%f,f=float,表示浮点类型

#定义变量
name = input("Name:")
age  = int(input("Age:"))
job  = input("Job:")
hometown = input("Hometown:")

#方法一:使用占位符
info = """
-------- info of %s --------
Name:      %s
Age:       %d
Job:       %s
Hometown:  %s
------------end-------------
""" % (name,name,age,job,hometown) #占位符有多少个,这里就应该有多少个变量

print(info)

#方法二:使用{} 双括号加format引用变量
info2 = """
-------- info of {_name}--------
Name:      {_name}
Age:       {_age}
Job:       {_job}
Hometown:  {_hometown}
------------end-------------
""" .format(_name=name,
            _age=age,
            _job=job,
            _hometown=hometown,)
print(info2)

#方法三:
info3 = """
-------- info of {0} --------
Name:      {0}
Age:       {1}
Job:       {2}
Hometown:  {3}
------------end-------------
""" .format(name,age,job,hometown) 
print(info3)

执行结果

Python if判断

1.单分支
if单分支只有一个if条件判断

Xmh_Age = 20

if Xmh_Age > 18:
    print("It's a little bit young")


if判断句最后需要加冒号 :
print前面固定四个空格

2.双分支
if双分支,如果..否则..

Xmh_Age = 20

if Xmh_Age > 30:
    print("It's a little bit young")
else:
    print("It's a little old")

用户登录案例

_username = "xmh"
_password = "abc123"

username = input("username:")
password = input("password:")

if username == _username and _password == password:
    print("Welecome user {name} login...".format(name=username))
else:
    print("Invalid username or password!")

3.多分支

if 条件:
    满足条件执行代码
elif 条件:
    上面的条件不满足就走这个
elif 条件:
    上面的条件不满足走这个
else:
    上面所有的条件不满足就走这段

猜年龄示例

age = 26
user_guess = int(input("your guess:"))

if user_guess == age :
    print("恭喜你答对了,可以抱得傻姑凉回家!")
elif user_guess < age :
    print("try bigger")
else :
    print("try smaller")

匹配成绩的小程序,成绩有ABCDE5个等级,与分数对应关系如下:

A   90-100
B   80-89
C   60-79
D   40-59
E   0-39

score = int(input(">>:"))
if score > 100:
    print("成绩最多只能到100")
elif score >= 90:
    print("A")

elif score >= 80:
    print("B")

elif score >= 60:
    print("C")

elif score >= 40:
    print("D")
    
elif score >=0 :
    print("E")
else:
    print("成绩不能是负数")

Python for循环

最简单的循环10次

for i in range(10):  #每循环一次都在range中取一个值,并赋值到i
    print("loop ",i)

输出:
-w347

循环10次,隔一个数显示

for i in range(0,10,2):  #步长为2(默认步长为1)

    print("loop ",i)

Python While循环

Python编程中while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

while 判断条件:
    执行语句……

写个让程序从0打印到100的程序,每循环一次,+1

count = 0
while count <= 100: #只要count<=100就不断执行下面的代码
    print("loop ",count)
    count +=1 #每执行一次,就把count+1,要不然就变成死循环了,因为count一直是0

练习题:
* 打印1到100的偶数
* 循环打印1-100,第50次不打印值,第60-80次,打印对应值的平方

//练习题一
count = 0
while count <= 100:
    if count % 2 == 0: #偶数
        print(count)

    count += 1

//练习题二
//第50次不打印,第60-80打印对应值的平方
count = 0
while count = 100:
    if count  == 50:
        pass #就是过
    elif count >= 60 and count <= 80:
        print(count * count)
    else:
        print("count)

    count += 1

1.无限循环 True
让程序一直循环运行下去,用True语句实现

count = 0
while True: #True本身就是真
    print("forever 21",count)
    count +=1

2.循环终止语句
如果在循环的过程中,因为某些原因,你不想继续循环了,那如何将它中止掉尼?这就用到了breakcontinue语句

  • break用于完全结束一个循环,跳出循环体,执行循环后面的语句
  • continue和break优点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
//break示例,跳出整个循环体,执行后面的语句
count = 0
while conut <= 100: #只要count<=100就不断执行下面的代码
    print("loop ",count)
    if count == 5 :
        break
    count +=1 #每执行一次,就把count+1


//contiune示例,调出这次循环,进行下次循环
count = 0
while conut <= 100: 
    count +=1
    if count > 5 and count < 95: #只要count在6-95之间,就不走下面的print语句,直接进入了下一次loop
        continue
    print("loop ",count)

3.While else
与其它语言else一般只与if搭配不同,在Python中还有个while ..else语句
while后面的else作用是指,当while循环正常执行完,中间没有被break中止的话,就会执行else后面的语句

while else用于检测循环是否正常,例如被break

count = 0
while count <= 5:
    print("loop ",count)
    count += 1

#    if count == 3:
#    break #中间被break的话就不执行else,而是else后面的语句

else:
    print("loop is done...")
    print ("out of loop")

Python 模块初始

Python的强大之处在于他有非常丰富和强大的标准库第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。

注意:导入的模块名不能和.py文件名相同

sys模块

import sys
#print(sys.path) #打印环境变量
print(sys.argv) #打印脚本名相对路径

//输出
# python3 sys_mod.py 1 2
['sys_mod.py', '1', '2']  #把执行脚本时传递的参数获取到了

os模块
调用系统命令

import os

#直接将命令执行,不能将结果赋值给变量
os.system("df -h") 

#执行完命令后,将结果存储在内存地址中,需结合.read(),读取结果
cmd_res = os.popen("df -h").read()  
print(cmd_res)

#在当前目录下创建目录
os.mkdir("new_dir") 
``
posted @ 2020-02-28 17:23  jasonminghao  阅读(308)  评论(0编辑  收藏  举报