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

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

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

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的取值无关。

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

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

  1. # -*- coding:utf-8 -*-
  2. # Author: WUJiang
  3. a_list = [0, 1, 2, 3]
  4. b_list = a_list # b_list: [0, 1, 2, 3]
  5. a_list[0] = 1 # a_list: [1, 1, 2, 3]
  6. print(b_list) # b_list: [1, 1, 2, 3]
  7. # 结论:b_list列表随着a_list的改变而改变,因为指向的是列表的内存地址(指针)
  8. # 避免这个问题可以用copy函数
  9.  
  10. a_list = [0, 1, 2, 3]
  11. b_list = a_list.copy() # b_list: [0, 1, 2, 3]
  12. a_list[0] = 1 # a_list: [1, 1, 2, 3]
  13. 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数据类型需加“”,否则报错。(建议不要轻易用)

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

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

  1. # -*- coding:utf-8 -*-
  2. # Author: WUJiang
  3. # 格式化输出
  4. name = input("enter your name:")
  5. age = input("enter your age:")
  6. info = '''-----info of %s-----
  7. Name:%s
  8. Age:%s
  9. ''' % (name, name, age)
  10. print(info)

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

  1. # -*- coding:utf-8 -*-
  2. # Author: WUJiang
  3. # 格式化输出
  4.  
  5. name = input("enter your name:")
  6. age = input("enter your age:")
  7. info = '''-----info of {_name}-----
  8. Name:{_name}
  9. Age:{_age}
  10. '''.format(_name=name, _age=age)
  11. print(info)
  12.  
  13. name = input("enter your name:")
  14. age = input("enter your age:")
  15. info = '''-----info of {0}-----
  16. Name:{0}
  17. Age:{1}
  18. '''.format(name, age)
  19. print(info)

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

  1. # -*- coding:utf-8 -*-
  2. # Author: WUJiang
  3. # getpass需在终端中使用
  4. import getpass
  5.  
  6. pw = getpass.getpass("password:")
  7. print(pw)

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

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

for循环常与range()搭配。

  1. # for与else
  2. for i in range(3):
  3. print("loop:", i)
  4. else:
  5. print("loop stop")

16.break与continue

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

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

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

  1. for i in range(3):
  2. print("---------", i)
  3. for j in range(3):
  4. if j < 3:
  5. print(j)
  6. else:
  7. # continue continue与break在此输出等效
  8. break # break 跳出所在的整个循环
  9. # --------- 0 0 1 2
  10. # --------- 1 0 1 2
  11. # --------- 2 0 1 2
  12. # 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. 开源一个windows消息队列查看器

    windows消息简单易用,在异步消息发送场景的使用还是比较适合.为了方便查看队列中的消息和删除一些异常消息,开发了一个简单的小工具拿出来分享下. 源码地址:https://gitee.com/eab ...

  2. linux日常管理-rsync后台服务方式-1

    rsync的另外一种方式,写一个配置文件,放在etc下,通过一个命令启动他,它会监听一个端口,在客户端和服务端进行通信. 远程机器的配置文件 IP是192.168.1.117 配置文件的名字,写成这个 ...

  3. Qt 按顺序保存多个文件

    void MainWindow::on_pushButtonSnap_clicked() { ]; sprintf(image_name, "%s%d%s", "C:/i ...

  4. 服务器修改密码cmd

    net user  账号  要修改的密码

  5. makefile基本语法

    多文件编程的小例子功能:在main.c里面调用其他两个源文件里面的函数,然后输出字符串. 1.main.c    #include"mytool1.h"#include" ...

  6. sharepoint Foundation 2013 error

    安装必须软件时提示以下错误 错误提示日志: 015-05-28 10:40:25 - Request for install time of 应用程序服务器角色.Web 服务器(IIS)角色2015- ...

  7. Vmware克隆Centos 不能上网的解决方案

    问题:用Vmware克隆Centos 6.4后,发现系统内只有eth1,而且/etc/sysconfig/network-scripts/下只有,ifcfg-eth0文件,虽然可以上网,但无法设置静态 ...

  8. 分布式系统中Unique ID 的生成方法

    http://darktea.github.io/notes/2013/12/08/Unique-ID 本文主要介绍在一个分布式系统中, 怎么样生成全局唯一的 ID 一, 问题描述 在分布式系统存在多 ...

  9. 4、在线blast比对结果解析(保守结构域)

    转载:http://www.bio1000.com/experiment/fenzi/237846.html 标签: NCBI Blast LASTP 摘要 : NCBI BLAST比对结果报告分析: ...

  10. 12、IGV-Integrative Genomics Viewer

    1.IGV的网址:http://software.broadinstitute.org/software/igv/(java环境) 常见的几种输入格式bam/sam(比对文件)  TDF(bam的精简 ...