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

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

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

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才会跳出整个程序的循环

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

  1. Python 循环语句(break和continue)

    Python 循环语句(break和continue) while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出 ...

  2. linux服务器升级python版本(python2与python3共存)

    linux服务器升级python版本 ######################################## 第一步先安装sqlite-devel,因为python2也有这个,python3 ...

  3. python基础1之python介绍、安装、变量和字符编码、数据类型、输入输出、数据运算、循环

    开启python之路 内容概要: 一.python介绍 二.安装 三.第一个python程序 四.变量和字符编码 五.用户输入 六.数据类型 七.一切皆对象 八.数据运算 九.if else 流程判断 ...

  4. python基础(1):python介绍、python发展史

    1. python介绍 1.1 python是什么样的语言 编程语⾔主要从以下⼏个⻆度为进⾏分类,编译型和解释型.静态语⾔和动态语⾔.强类型定义语⾔和弱类型定义语⾔,我们先看编译型语⾔和解释型语⾔.稍 ...

  5. python介绍、解释器、变量及其它

    python 一.python及编程语言介绍 编程语言发展:机器语言==>汇编语言==>高级语言 机器语言:由数字电路发展而来编程都是靠0101的二进制进行 汇编语言:汇编语言的实质和机器 ...

  6. Python基础之注释,算数运算符,变量,输入和格式化输出

    Python的注释 注释的作用:用自己熟悉的语言,对某些代码进行标注说明,增强程序的可读性: 在python解释器解释代码的过程中,凡是#右边的,解释器都直接跳过这一行: 注释的分类 单行注释 # 这 ...

  7. Python循环语句之break与continue的用法

    摘自原文章: http://www.jb51.net/article/73383.htm Python break 语句Python break语句,就像在C语言中,打破了最小封闭for或while循 ...

  8. python HtmlTestRunner python2.x python3.x报告优化模板源码下载

    文件py压缩包下载地址https://files.cnblogs.com/files/SunshineKimi/HtmlTestRunner2.x_3%2Cx.rar 源码拷贝如下: python 2 ...

  9. python:python2与python3共存时,pip冲突,提示Fatal error in launcher: Unable to create process using '"d:\python27\python2.exe" "D:\Python27\Scripts\pip2.exe" '

    问题背景: 机器上同时装了python2.和python3后,导致只能用pip3了,使用pip2时提示:Fatal error in launcher: Unable to create proces ...

  10. Python基础之Python介绍

    Python的创始人为吉多·范罗苏姆(Guido Van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新 ...

随机推荐

  1. leetcode笔记-1 twosum

    # -*- coding: utf-8 -*- #!/bin/env python # Python2.7 nums = [2, 4, 7, 0, 12, 6] print sorted(range( ...

  2. sql查询将列里面的值替换为别的值但是实际值不变

    数据库有一张表BUG(缺陷记录表) 里面有字段severity(严重程度): severity的值实际为1,2,3,4,但希望在查询结果中将severity的1,2,3,4值显示为其他的值,但seve ...

  3. CentOS安装配置radius服务器

    1.安装 Yum install -y freeradius freeradius-mysql freeradius-utils 2.配置 1)修改 clients.conf # vi /usr/lo ...

  4. 在python3.6下 发明一个类似python3.7 dataclass数据类,不用在 __init__中self.xx

    虽然我用3.6,但我在2.7转3.6时候,把3.3 3.4 3.5 3.6的变化都看了一次,虽然已经忘了哪些变化.同时也关注3.7 3.8的变化,3.7中就有1个数据类印象深刻,因为之前在定义这种类时 ...

  5. [poj1459]Power Network(多源多汇最大流)

    题目大意:一个网络,一共$n$个节点,$m$条边,$np$个发电站,$nc$个用户,$n-np-nc$个调度器,每条边有一个容量,每个发电站有一个最大负载,每一个用户也有一个最大接受量.问最多能供给多 ...

  6. 使用JFileChooser保存文件

    --------------------siwuxie095                                 工程名:TestFileChooser 包名:com.siwuxie095 ...

  7. redis GEO地理位置命令介绍

    GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. Time comp ...

  8. maven 打JAR包资源文件指定路径与文件读取

    1.配置RESOURCES节点 有时会遇到maven打包后找不到资源文件了,其实这时候路径发生了变化,为了确保打包后路径不发生变化,指定一个固定的路径,请看下面配置 <build> ... ...

  9. xgene:肿瘤相关基因 KRAS,,BRAF,,通路PI3K-AKT

    KRAS基因 一个是KRAS1,位于chr6 短臂上,是一个“假基因”,它不能被转录成RNA,故没有功能的 另一个是KRAS2,位于chr12 短臂上..是“真基因”,是能够转录.并且翻译成蛋白的,是 ...

  10. p2661 信息传递(Tarjan模板)

    传送门 题目 有 nnn 个同学(编号为 111 到 nnn )正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 iii 的同学的信息传递对象是编号为 TiT_iTi​ ...