Python3基础(1)Python介绍、Python2 与Python3、变量、用户输入、if...else和for循环、while循环、break与continue

---------------个人学习笔记---------------

----------------本文作者疆--------------

------点击此处链接至博客园原文------

 

Python擅长的领域

web开发:django、pyramid、tornado、bottle、flask、webpy

网络编程:twisted、requests、scrapy、paramiko

科学计算:scipy、pandas、ipython

GUI图形开发:wxpython、pyqt、kivy

运维自动化:openstack

学习规划

 

1.编译型语言(一次将全部代码转换为机器语言--可执行文件)和解释型语言(逐行解释、执行),编译型语言执行速度更快

2.Python是一个动态解释性的强类型定义语言(强制数据类型定义的语言,变量不经过强制转换则永远为原来的数据类型)。

3.Python开发效率高、高级语言、可移植性、可扩展性、可嵌入性,其缺点为速度慢、代码不能加密、线程不能利用多CPU问题,即Python的多线程无法利用多核优势并发执行

4.Python解释器:CPython(默认下载)、IPython、PyPy(执行更快,动态编译而非解释)、Jython、IronPython。

5.Python2.7后不再更新Python2标准库,官方支持到2020/4,Python3不完全兼容Python2,有部分改动,如库名变更、print语句、字符编码等。

6.若想在linux系统中类似于执行shell脚本一样执行python程序(windows中不行),如./hello.py,需要在文件头部指定解释器 #! /usr/bin/env python(即寻找Python环境变量),还需要先赋予执行权限,chmod 755 xx.py (赋予所有用户读写权限)。

7.Pycharm中配置模板:File---Settings---Editor---File and Code Templates---Python Script中添加模板,每次新建Python脚本将自动添加自定义模板。

8.Pycharm中的一些快捷方式:右键Run 'xx'运行当前脚本、脚本右键Refactor---Rename改名、shift+tab 撤销缩进、ctrl+/选中多行同时注释、shift+f9对当前脚本debug、ctrl+r变量名替换。

9.变量赋值疑难问题及解释

第1个例子 a1指向0的内存地址,a2通过a1指向0的内存地址,当a1赋新值后,a2仍指向0的内存地址,而与a1的取值无关。

# -*- coding:utf-8 -*-
# Author: WUJiang
# 变量赋值疑难问题
a1 = 0
a2 = a1
print(a1, a2)  # 0 0
a1 = 1
print(a1, a2)  # 1 0 而不是 1 1

第2个例子 -----------------指向列表的指针,列表元素修改则跟着修改。

# -*- coding:utf-8 -*-
# Author: WUJiang
a_list = [0, 1, 2, 3]
b_list = a_list  # b_list: [0, 1, 2, 3]
a_list[0] = 1    # a_list: [1, 1, 2, 3]
print(b_list)    # b_list: [1, 1, 2, 3]
# 结论:b_list列表随着a_list的改变而改变,因为指向的是列表的内存地址(指针)
# 避免这个问题可以用copy函数

a_list = [0, 1, 2, 3]
b_list = a_list.copy()  # b_list: [0, 1, 2, 3]
a_list[0] = 1  # a_list: [1, 1, 2, 3]
print(b_list)  # b_list: [0, 1, 2, 3]

10.保留字段不能声明为变量名: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。

11.字符编码 

Python解释器在加载.py文件中的代码时,会对内容进行编码。

默认ASCII,美国标准信息交换代码,主要用于现代英语和其他西欧语言(用8位表示),最多能表示255个符号,预留了128个符号,但是128符号不足以对其余字符(如中文汉字)编码,因此需要额外扩展其他编码(预留128个符号可用于保存内存地址指针,比如某个汉字在某一范围内,指针指向去查编码表,如GB2312)。

由于ASCII码无法将世界上各种文字和符号全部表示,所以,需要一种可以表示所有字符和符号的编码:Unicode(统一码、万国码、单一码)为每种语言中每个字符设定了统一且唯一的二进制编码,规定所有字符和符号最少由16位(2字节)表示.

UTF-8,是对Unicode编码的压缩和优化,其不再最少使用2个字节,而是将所有字符和符号进行分类,ASCII码中的内容用1个字节表示,欧洲字符用2个字节表示,东亚字符用3个字节表示......

Python3字符集支持中文,默认UTF-8编码,而Python2默认ASCII编码,处理中文需指定UTF-8编码。

12.用户输入

 Python2中 raw_input与Python3中的input等效,统一将输入转换为str数据类型,若需要整形数字可再强制类型转换。

 Python2中input,接收什么数字类型就是什么类型,如接收数字1就认为输入为整形,str数据类型需加“”,否则报错。(建议不要轻易用)

# Python2
# 输入姓名必须加引号,如"wujiang",而Python3中只需要输入wujiang
name = input("enter your name:")
print(name)

13.格式化输出(%s、format等)

# -*- coding:utf-8 -*-
# Author: WUJiang
# 格式化输出
name = input("enter your name:")
age = input("enter your age:")
info = '''-----info of %s-----
Name:%s
Age:%s
''' % (name, name, age)
print(info)

%s为%string,同样可以用%d、%f,但需保证对应变量的类型是一致的。

# -*- coding:utf-8 -*-
# Author: WUJiang
# 格式化输出

name = input("enter your name:")
age = input("enter your age:")
info = '''-----info of {_name}-----
Name:{_name}
Age:{_age}
'''.format(_name=name, _age=age)
print(info)


name = input("enter your name:")
age = input("enter your age:")
info = '''-----info of {0}-----
Name:{0}
Age:{1}
'''.format(name, age)
print(info)

14.(标准库)getpass模块  getpass.getpass("xxxx:")   输入密文不可见,但其在pycharm用不了,需在终端下执行该.py文件。

# -*- coding:utf-8 -*-
# Author: WUJiang
# getpass需在终端中使用
import getpass

pw = getpass.getpass("password:")
print(pw)

15.if-elif-else条件判断与while、for循环,while、for还能和else搭配

# -*- coding:utf-8 -*-
# Author: WUJiang
# while与else
age = int(input("age:"))
while age < 30:
    print("你还年轻,还可以从头再来")
    break
else:
    print("你虽然年纪大了,但大佬们也是你这个年纪起步的!")

for循环常与range()搭配。

# for与else
for i in range(3):
    print("loop:", i)
else:
    print("loop stop")

16.break与continue

 break跳出(所在循环的)整个循环,continue跳出本次(当前)循环进入下次循环。

for i in range(0, 100, 2):
    if i % 5 == 0:
        print(i)
        # break  break只会print 0
        # continue  而continue会print 0 10 20 30 40 50 60 70 80 90

多个循环嵌套时,break跳出其所在的整个循环。

for i in range(3):
    print("---------", i)
    for j in range(3):
        if j < 3:
            print(j)
        else:
            # continue continue与break在此输出等效
            break   # break 跳出所在的整个循环
            # --------- 0    0 1 2
            # --------- 1    0 1 2
            # --------- 2    0 1 2
    # break 这个break才会跳出整个程序的循环
posted @ 2019-04-11 09:19  JiangJ~  阅读(404)  评论(0编辑  收藏  举报