python简介
1、python是一种解释性语言,不需要编译,类似于php
2、Python是交互式语言,可以直接执行python进入交互页面
3、面向对象编程
如果输出有中文需要指定编码
# -*- coding: UTF-8 -*-
如何运行python
第一行代码#!/usr/bin/env python作用用来指定Python的解释器
可以写成 ./test.py运行文件否则报错
也可以python test.py运行
b=a和b=a[:]区别
b=a将两者指向同一个对象
b=a[:]会创建一个新的与a完全相同的对象,但是与a并不指向同一对象。
import sys的作用与用法
import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。
用法
sys.argv 是一个包含命令行参数的列表。
sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
sys.exit()退出程序
sys.version()获取版本信息
sys.maxint()获取最大值
sys.platform()返回模块的搜索路径
sys.getrecursionlimt()获取最大递归层级
import os的作用 详情见手册
os 模块提供了非常丰富的方法用来处理文件和目录
什么是i/o操作
nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
global修改全局变量
socket编程实现
元组和集合是不可以修改,数组和列表和字典都可以修改,元组不能修改也不能追加,除非元组里面有数组,可以更改数组
python内置函数的调用
# 内置函数的调用
from functools import wraps
def test(fun):
# *:元组 **:字典 内置函数
@wraps(fun) # 必须要引用warps来确保原函数在使用装饰器时不改变自身的函数名及应有属性。
def warp(*args, **kwargs):
print("this is begin...")
fun(*args, **kwargs)
print("this is end...")
return warp
# 对handle_event方法进行包装
@test
def handle_event(*args, **kwargs):
print("this is service")
handle_event()
#输出结果
this is begin...
this is service
this is end...
nonloca的使用
# nonlocal的使用
def handle_test():
num = 10
def inner():
nonlocal num
num = 100
print(num)
inner()
print(num)
handle_test() # 100 100
取出数组中的key,val值
for key,val in enumerate(names):
print(names[key], scores[key])
取出字典dict中的key,val值
for key,val in dict.items():
print(key,val)
获取字典dict中所有的value
# 获取所有的value
for val in d.values():
print(val)
set的简单使用,使用set去重,求交集、差集、并集
x = set('hobby')
y = set('rabbit')
# 集合中重复的值会被删除 {'b', 'o', 'y', 'h'} {'a', 'i', 'b', 't', 'r'}
print(x,y)
# 并集 b {'o', 'a', 'y', 'h', 'i', 'b', 't', 'r'}
print(x | y)
# 交集 {'b'}
print(x & y)
# 差集 {'o', 'h', 'y'}
print(x - y)
print(y-x)
set区分大小写
# set是区分大小写的 输出:bob不是我们班的同学
students = set(['Alices', 'Bob', 'Candy', 'David', 'Ellena'])
# 请问'bob'是班里面的同学吗?
if 'bob' in students:
print('True')
else:
print('{}不是我们班的同学'.format('bob'))
# 请问'bob'是班里面的同学吗?
# 由于name_set不能识别小写的名字,请改进name_set,是小写的名字也能判断在name_set里面。
names_bob = 'bob'
for keys in students:
keys = keys.lower()
if 'bob' in keys:
print('{}是我们班同学'.format(names_bob))
给集合追加、删除、清空元素
# 给集合追加一个元素
students.add('insert')
# 给元素追加多个元素
ins_list = ['one', 'two', 'three']
students.update(ins_list)
print(students)
# 删除set中的元素
students.remove('one')
print(students)
# discard,删除集合中没有的元素不会报错
students.discard('two')
print(students)
# 清空set中所有的元素
students.clear()
print(students)
*args和**kwargs的区别:元组和字典的区别
# 编写一个函数,它接受关键字参数names,gender,age三个list,分别包含同学的名字、性别和年龄,请分别把每个同学的名字、性别和年龄打印出来
def info(**kwargs):
names = kwargs['names']
gender_list = kwargs['gender']
age_list = kwargs['age']
index = 0
for name in names:
gender = gender_list[index]
age = age_list[index]
print('name: {}, gender: {}, age: {}'.format(name, gender, age))
index += 1
info(names = ['Alice', 'Bob', 'Candy'], gender = ['girl', 'boy', 'girl'], age = [16, 17, 15])
def average(*args):
sum = 0
if len(args) == 0:
return sum
for item in args:
sum += item
avg = sum / len(args)
return avg
average(1, 2) # ==> 1.5
average(1, 2, 2, 3, 4) # ==> 2.4
请练习定义一个动物类,并创建出两个实例dog
, cat
,打印实例,再比较两个实例是否相等。
class Person:
count = 0
count_self = 0
def __init__(self, name, age):
self.name = name
self.age = age
# Person.count相当于静态变量,是类的变量,初始值为0,实例化一次+1
# self.count 是实例的变量,也叫对象的变量。如果这样写,不会计数
Person.count += 1
xiao_xue = Person('xiaoxue', 18)
xiao_ming = Person('xiaoming', 19)
print(Person.count)
format语法
# <内容居左 一共10个字符 不足10个用“=”填充 效果:开始执行======
str1 = '{x:=<10}'.format(x='开始执行')
print(str1)
# >内容居右 一共10个字符 不足10个用“=”填充 效果:======开始执行
str2 = '{x:=>10}'.format(x='开始执行')
print(str2)
# ^内容居中 一共10个字符 不足10个用“=”填充 效果:===开始执行===
str3 = '{x:=^10}'.format(x='开始执行')
print(str3)
# 保留三位小数 四舍五入
str4 = '{salary:.3f}'.format(salary=123123.123956)
print(str4)
‘f语法
# f'语法
# 如何给f字符串中变量值加{}
x = 'egon'
y = 18
res = f'name:{{{x}}} age:{y}'
print(res)
# 如何给f字符串中运算
res = f'{10 + 3}'
print(res)