Python基础之day2

Python介绍

一、python对比其他语言

C,python,java,C#

C语言:代码编译得到机器码,机器码在处理上直接执行,每一条指令控制CPU工作

其他语言:代码编译得到字节码,虚拟机执行字节码并转换成机器码再在处理器上执行

python和C的对比,python是由C开发而来

     对于使用:python的类库齐全并且使用简洁,如果要实现同样的功能,Python用10行代码可以解决,C可能就需要100行甚至更多
     对于速度:Python的运行速度相较于C比较慢

python对比Java,C#等

     对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
     对于速度:Python在速度上可能稍显逊色
     所以,python和其他语言没有本质区别,其他区别在于:擅长领域,人才丰富,先入为主。

二、python的种类

 

  • Cpython:Python的官方版本,使用C语言实现,使用最广,Cpython会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
  • Jython:Python的java实现,jython会将Python代码动态编译成java字节码,然后再JVM上运行
  • IronPython:Python的C#实现,IronPython将Python编译成C#字节码,然后在CLR上运行
  • PyPy:Python实现的Python,将Python的字节码编译成机器码(执行快)
  • ...

三、python入门

1.python内部执行过程

2.解释器

python文件必须在头部明确指明由python解释器来执行。

#!/usr/bin/env python
print("hello,world")

3.内容编码

 ascii:美国标准信息交换码(8位)
 unicode:万国码(至少16位),可以表示任何国家的语言
 utf-8: UTF-8是一种针对Unicode的可变长度字符编
 Python2.x在执行.py文件时默认使用的是ascii编码,如果不在头部指定utf-8编码,代码执行是可能会因为编码问题而报错。Python3.x里面默认使用utf-8读代码,可以忽略编码问题。

编码解码过程:


4.注释

单行注释如下:

#这一行被注释

多行注释用三个单引号(‘‘‘ ‘‘‘)或双引号(""" """)表示,如下:

‘‘‘
多行注释
多行注释
‘‘‘"""
多行注释
多行注释
"""

5.执行脚本传入参数

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

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

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

示例:创建一个index.py文件,内容如下:

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

import sys

print(sys.argv) 

执行:

D:\python>python index.py 0000
[‘index.py‘, ‘0000‘]

argv方法会把文件路径和传入参数组成一个列表

数据类型常用方法

整数常用方法:

     1.__abs__:取绝对值,n=-9,n.__abs__()或者abs(n)可以获得
     >>> n = -9
     >>> n.__abs__()
     9
     >>> abs(n)
     9

     2.__add__:加法,用法x.__add__(y)<==>x+y
     >>> n = 9
     >>> n.__add__(9)
     18
     >>> n + 9
     18

     3.int():创建一个整数(括号内可以指明创建的是几进制的),比如i=int(‘10‘,base=2),相当于创建一个整数2
     >>> int(‘10‘,base=2)
     2
     >>> int(‘100‘,base=2)
     4
     >>> int(‘100‘,base=8)
     64

     4.__and__:位运算x.__and__(y)<==>x&y
     >>> n = 5
     >>> n.__and__(6)
     4
     >>> 5&6
     4

     5.__cmp__:比较两个数大小,返回0(相等),1(大于),-1(小于),用法x.__cmp__(y)<==>cmp(x,y)
     >>> n = 5
     >>> n.__cmp__(6)
     -1
     >>> cmp(5,6)
     -1
     >>> cmp(6,6)
     0
     >>> cmp(6,7)
     -1

     6.__coerce__:强制生成一个元祖,用法x.__coerce__(y)<==>coerce(x,y)
     >>> n = 10
     >>> n.__coerce__(20)
     (10, 20)
     >>> coerce(10,20)
     (10, 20)

     7.__divmod__:相除得到的商和余数并组成一个元组,用法x.__divmod__(y)<==>divmod(x,y)
     >>> divmod(99,10)
     (9, 9)
     >>> n = 99
     >>> n.__divmod__(10)
     (9, 9)

     8.__div__:取商,x.__div__(y)<==>divmod(x,y)
     >>> n = 20
     >>> n.__div__(5)
     4
     >>> 20/5
     4

     9.__float__:把整数转成浮点数
     >>> n = 20
     >>> n.__float__()
     20.0
     >>> float(20)
     20.0

     10.__floordiv__:取商,地板除
     >>> n = 5
     >>> n.__floordiv__(2)
     2
     >>> 5//2
     2

     11.__hex__:将数字转换成16进制,用法x.__hex__()<==>hex(x)
     >>> n = 20
     >>> n.__hex__()
     ‘0x14‘

     12.__oct__:八进制,用法同上
     >>> n = 20
     >>> n.__oct__()
     ‘024‘
     >>> oct(20)
     ‘024‘

     13.__mod__:取模(余数),x.__mod__(y)<==>x%y
     >>> n =11
     >>> n.__mod__(2)
     1
     >>> 11%2
     1

     14.__neg__:正负数互转(正转负,负转正),用法x.__neg__()
     >>> n =-5
     >>> n.__neg__()
     5

字符串常用方法:

1.capitalize方法,把字符串首字母变为大写:
     >>> name = ‘akon‘
     >>> name.capitalize()
     ‘Akon‘

2.center方法,把字符串放中间(两边可填充其他字符):
     >>> name = ‘akon‘
     >>> name.center(20,‘=‘)
     ‘========akon========‘

3.count方法,寻找子序列在字符串中出现个数(可指定起始结束位置):
     >>> name = ‘akonakonakonakon‘
     >>> name.count(‘k‘)
     4
     >>> name.count(‘a‘,0,10)
     3
     >>> name = ‘akonakonakonakon‘
     >>> name.count(‘a‘,5,10)
     1

4.编码与解码(Python3.5里只能编码不能解码)

decode解码:
     >>> str1 = ‘有‘
     >>> str1
     ‘\xe6\x9c\x89‘
encode编码:
     >>> str1 = ‘有‘
     >>> str1
     ‘\xe6\x9c\x89‘
     >>> str2 = str1.decode(‘utf-8‘)
     >>> str2
     u‘\u6709‘
     >>> str2.encode(‘gbk‘)
     ‘\xd3\xd0‘
5.expandtabs,将tab键转换成空格,默认情况下1个tab等于8个空格,用法如下:

     >>> name=‘      akon‘
     >>> name.expandtabs()
     ‘        akon‘
     >>> name.expandtabs(4)
     ‘    akon‘

6.find方法,可以查单个字符在字符串中的位置[索引](从左到右,rfind为从右到左),如果没找到则返回-1,用法如下:
     index(rindex从右到左)方法的用法跟find一样,只不过用index方法如果找不到会报错
     find(rfind):
     >>> name = ‘akonbkonakon‘
     >>> name.find(‘n‘)
     3
     >>> name.find(‘c‘)
     -1
     >>> name.rfind(‘n‘)
     11

     index(rindex):
     >>> name = ‘akonbkonakon‘
     >>> name.index(‘o‘)
     2
     >>> name.rindex(‘o‘)
     10
     >>> name.index(‘c‘)
     Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
     ValueError: substring not found
     >>>

7.字符串的格式化

     >>> name = ‘I am {0},age{1}‘
     >>> name.format(‘akon‘,‘26‘)
     ‘I am akon,age26‘
     >>> name = ‘I am {b},age {a}‘
     >>> name.format(a=16,b=‘akon‘)
     ‘I am akon,age 16‘

     列表传参数:

     >>> name = ‘I am {0},age{1}‘
     >>> list1 = [‘akon‘,26]
     >>> name.format(*list1)
     ‘I am akon,age26‘

     字典传参数:

     >>> name = ‘I am {a},age {b}‘
     >>> dict1 = {‘a‘:‘akon‘,‘b‘:27}
     >>> name.format(**dict1)
     ‘I am akon,age 27‘

8.字符串首字母如果为大写则为标题,用title方法可以把字符串变成标题

     >>> name = ‘akon hello‘
     >>> name2 = name.title()
     >>> name2
     ‘Akon Hello‘
     >>> name2.istitle()
     True

9.ljust和rjust(跟center用法相同)填充数据并把字符串放到左边和右边

10.lower(casefold)/upper方法把字符串全部变成小写/大写

     >>> name = ‘Akon Hello‘
     >>> name.upper()
     ‘AKON HELLO‘
     >>> name.lower()
     ‘akon hello‘

11.swapcase大小写对换

     >>> name = ‘Akon Hello‘
     >>> name.swapcase()
     ‘aKON hELLO‘
     >>>

12.partition把字符串分割成3部分(以括号内字符串为分割点)
     >>> name = ‘AkonIsGood‘
     >>> name.partition(‘Is‘)
     (‘Akon‘, ‘Is‘, ‘Good‘)
     >>>
13.replace方法替换(会找到所有符合的字符替换)

     >>> name=‘abcdefgabcdabc‘
     >>> name.replace(‘cde‘,‘CCC‘)
     ‘abCCCfgabcdabc‘
     >>> name.replace(‘c‘,‘KKK‘)
     ‘abKKKdefgabKKKdabKKK‘
     >>> name.replace(‘abc‘,‘a‘,1) #指定转换个数
     ‘adefgabcdabc‘

14.contains包含

     >>> name = ‘abcdefg‘
     >>> name.__contains__(‘ab‘)
     True
     >>> ‘ab‘ in name
     True

15.format格式化

     >>> name = ‘abc{0}‘
     >>> name.format(‘abc‘)
     ‘abcabc‘

16.endswith判断字符串(或子序列)是否以指定字符结尾

     >>> n = ‘dfsdfsdfsd‘
     >>> n.endswith(‘d‘)
     True
     >>> n.endswith(‘d‘,0,5)
     False

17.join把列表拼接成字符串

     >>> li = [‘you‘,‘are‘,‘fool‘]
     >>> ‘ ‘.join(li)
     ‘you are fool‘

18.split以指定字符分割字符串,并组成一个列表

     >>> name=‘abcdefgabcdabc‘
     >>> name.split(‘b‘)
     [‘a‘, ‘cdefga‘, ‘cda‘, ‘c‘]

19.maketrans对应表,与translate一起用

列表常用方法:

1.append往列表尾部添加一个元素

     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name.append(‘cloris‘)
     >>> name
     [‘abc‘, ‘akon‘, ‘ak‘, ‘cloris‘]
2.clear清空列表
     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name.clear()
     >>> name
     []
3.count查看元素出现的次数
     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name.count(‘ak‘)
     1
4.extend扩展,把列表拼接
     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name2 = [‘cloris‘]
     >>> name.extend(name2)
     >>> name
     [‘abc‘, ‘akon‘, ‘ak‘, ‘cloris‘]
5.index查看索引
     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name.index(‘akon‘)
     1
6.pop删除指定元素(索引)并返回这个元素,默认删除最后一个
     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name.pop(1)
     ‘akon‘
     >>> name
     [‘abc‘, ‘ak‘]
7.remove删除指定元素
     >>> name = [‘abc‘,‘akon‘,‘ak‘,]
     >>> name.remove(‘abc‘)
     >>> name
     [‘akon‘, ‘ak‘]
8.reverse反转列表
     >>> name = [‘abc‘, ‘akon‘, ‘ak‘, ‘cloris‘]
     >>> name.reverse()
     >>> name
     [‘cloris‘, ‘ak‘, ‘akon‘, ‘abc‘]
9.sort排序
     name = [‘abc‘, ‘akon‘, ‘ak‘, ‘cloris‘]
     >>> name
     [‘abc‘, ‘ak‘, ‘akon‘, ‘cloris‘]

元组

1.count方法,计算指定元素的个数
     >>> t1 = (1,2,1,2,)
     >>> t1.count(1)
     2
2.index方法,获取索引
     >>> t1 = (1,2,1,2,)
     >>> t1.index(2)
     1

字典

字典的创建
     >>> dic = dict(k1=‘v1‘,k2=‘v2‘)
     >>> dic
     {‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘}
     >>> dic2 = {‘k3‘:‘v3‘,‘k4‘:‘v4‘}
     >>> dic2
     {‘k3‘: ‘v3‘, ‘k4‘: ‘v4‘}
字典常用方法
1.fromkeys方法
     >>> dic = dict(k1=‘v1‘,k2=‘v2‘)
     >>> dic2 = dic.fromkeys([‘k1‘,‘k2‘],‘v10‘)
     >>> dic2
     {‘k2‘: ‘v10‘, ‘k1‘: ‘v10‘}
2.get方法,获取指定key的值,如果key不存在,默认返回一个空,可以指定返回什么信息
     >>> dic = dict(k1=‘v1‘,k2=‘v2‘)
     >>> print(dic.get(‘k1‘))
     v1
     >>> print(dic.get(‘k3‘))
     None
     >>> print(dic.get(‘k3‘,‘nothing‘))
     nothing
3.items,keys,values方法
     >>> dic2 = {‘k3‘:‘v3‘,‘k4‘:‘v4‘}
     >>> dic2.items()
     [(‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘)]
     >>> dic2.keys()
     [‘k3‘, ‘k4‘]
     >>> dic2.values()
     [‘v3‘, ‘v4‘]

4.pop删除指定元素并返回元素的值
     >>> dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘}
     >>> dic.pop(‘k2‘)
     ‘v2‘
     >>> dic
     {‘k3‘: ‘v3‘, ‘k1‘: ‘v1‘}
5.popitem()方法,随机删除一个元素,并返回
     >>> dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘}
     >>> dic.popitem()
     (‘k3‘, ‘v3‘)
     >>> dic
     {‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘}

6.update方法,遍历字典key,如果存在则更新对应的value,如果不存在则创建并添加到字典中
     >>> dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘}
     >>> dic.update({‘k3‘:‘v33‘})
     >>> dic
     {‘k3‘: ‘v33‘, ‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘}
     >>> dic.update({‘k4‘:‘v4‘})
     >>> dic
     {‘k3‘: ‘v33‘, ‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘, ‘k4‘: ‘v4‘}

7.setdefault方法,相当于往字典添加一个元素
     >>> dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘}
     >>> dic.setdefault(‘k4‘,‘v4‘)
     ‘v4‘
     >>> dic
     {‘k3‘: ‘v3‘, ‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘, ‘k4‘: ‘v4‘}
时间: 2024-07-31 15:18:44

Python基础之day2的相关文章

Python基础,day2

本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 name = ["Martin","Annie","JMA","Martin","Ly"] 通过下标访问列表中的元素,下标从0开始计数 1 >>> name[0] 2 'Martin' 3 &

Python之路,Day2 - Python基础2

Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 names = ['Alex',"Tenglan",'Eric'] 通过下标访问列表中的元素,下标从0开始计数 1 2 3 4 5 6 7 8 >>> names[0] 'Alex' >>> na

Python基础 day2

Python基础 一.Python的数据类型 1.int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647,而.在64位系统上,整数的位数为64位,取值范围为-2**63-2**63-1,即-9223372036854775808-9223372036854775807 2.long(长整型) 为什么会有这个概念呢? 因为在Python2.2起,如果放置在内存里的数特别大发生溢出,Python就会自动将整型数据转换

day2抓包&amp;python基础

抓包: 为什么要抓包: 1.定位问题 2.篡改请求 3.能测试系统的其他的异常 手机抓包charles: 1.打开charles,必须保证手机和电脑是在一个局域网里面 2.手机设置代理,服务器写你电脑的ip,端口号默认是8888 https协议的抓取不到数据,安全协议,需要对应公司自己的证书导入到抓包工具才可以. 模拟弱网测试:可限速的 设置端口: soupui: 1.sopaui新建一个soap项目2.在wsdl地址这里,填上 wsdl接口的地址3.左边是请求的数据,右边是返回的数据 pyth

python 基础(一)

一.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 1.1.Python应用领域: l 云计算: 云计算最火的语言, 典型应用OpenStack l WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣..., 典型WEB框架有Django l 科学运算.人工智能: 典型库N

linux+jmeter+python基础+抓包拦截

LINUX 一 配置jdk 环境 *需要获取root权限,或者切换为root用户 1.windows下载好,去 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 官方网站下载jdk(linux相应版本) 2.在usr目录下创建java路径文件夹 [root bin]cd /usr mkdir java 3.将jdk-8u60-linux-x64.tar.gz放到刚才创建的文件夹下

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

Python基础入门 (一)

一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: Python 2.x is legacy, Python 3.x is the present and future of the language Python 3.0 was released in 2008. The final 2.x version 2.7 release came out

Python 基础 - Day 4 Learning Note - Generator 生成器

列表生成器/列表解析 list comprehension 简单灵活地创建列表,通常和lambda(), map(), filter() 一起使用 通过列表生成式, 直接创建列表.但是,收到内容限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问几个元素,那其他的就白占空间.列表生成器能够一边循环一边计算,大大节省大量的空间.是生成器的一种. 只有调用,才能生成. 不支持切片操作,只能通过__next()___一个个取数字. 基本语法