一、函数
用户自定义函数:
def 函数名 (参数列表):
函数体
1.多元赋值语句:(同时获取多个返回值)
def add_mul(a,b):
add=a+b
mul=a*b
return add,mul
x,y=add_mul(5,6)
print("add=%d,mul=%d"%(x,y)) #输出为add=11,mul=30
假设代码中局部变量和全局变量名相同,则在函数内,只有局部变量有效
2.参数的默认值
当没有调用函数的时候没有赋值的时候,函数内的形参为默认值,而当有赋值的时候,此时的默认值失效
**当一个函数有多个参数的时候,设置的默认值必须从右边开始
example:
def add_mul(a,b=6):
add=a+b
mul=a*b
return add,mul
x,y=add_mul(5)
print("add=%d,mul=%d"%(x,y))#输出为add=11,mul=30
x,y=add_mul(5,7)
print("add=%d,mul=%d"%(x,y))#输出为add=12,mul=35
3.列表和字典作为变量时
在函数内部对列表或者字典的元素所作的修改,会改变实参的值
ex:
def add(lst):
for i in range(len(lst)):
lst[i]=lst[i]-2
return lst
list_2=[2,3,45,6]
print(add(list_2)) #输出为[0, 1, 43, 4]
二、模块、包和库
1.基本概念
1)模块
模块是一个python文件(.py),拥有多个功能相近的函数或类。便于代码复用,提高变成效率,提高了代码的可维护性,避免函数名和变量名的冲突
2)包
为了避免模块名冲突,Python引入按目录来组织模块的方法。一个包对应一个文件夹,将功能相近的模块(Python文件),放在同一个文件夹下
在作为报的文件夹下有一个__init__.py文件
子包:子目录中也有__init__.py文件
3)库
具有相关功能的模块或包的集合
2.基本操作
1)导入模块/包/库
import 名称 as 别名
为了以后更加便利的去调用
import numpy as np
np.random.random()
一般的导入顺序是
python 标准库
python 第三方库
自定义模块
一般的调用形式为:
模块名.函数名
3.面向对象的编程
1.类
1)声明类:
class 类名:
类属性=初值
方法(参数列表) #参数列表里面的第一个必须是self
(self,参数1,参数2,……)
ex:
class Person: #类名首字母大写
money=10000 #类里面的属性和方法名首字母使用小写字母
def say_hello(self);
print('hello')
2)创建对象
对象名=类名()
class Person:
money=10000
def say_hello(self):
print('hello')
zhangsan=Person()
print(zhangsan.money)
zhangsan.say_hello()
zhangsan拥有Person类中所有的属性和方法
3)删除对象
del zhangsan
4)添加属性
添加的属性只存在添加的那个对象中,对于其他的对象则无
ex:
class Person:
money=10000
def say_hello(self):
print('hello')
zhangsan =Person()
zhangsan.major="cool"
print(zhangsan.major)
lisi=Person()
print(lisi.major)
输出:
cool
Traceback (most recent call last):
File "e:/File_/deep learning/Code/diao.py", line 9, in <module>
print(lisi.major)
AttributeError: 'Person' object has no attribute 'major'
lisi中没有添加major这个属性,所以报错
2.构造函数和析构函数
1)构造函数:
在创建对象时,用来完成初始化操作(例如赋初值)
__ init __(self,参数1,参数2,参数3,……)
2) 析构函数:
在清除对象时,回收和释放对象所占用的资源
__ del() __
ex:
class Person:
def __init__(self,name,age,gender='男'):
self.name=name
self.age=age
self.gender=gender
def __del__(self):
print('bye bye from:',self.name)
def printInfo(self):
print('姓名:',self.name,'年龄:',self.age,'性别: ',self.gender)
zhangsan =Person('张三',122)
lisi=Person('李四',23,'女')
zhangsan.printInfo()
lisi.printInfo()
del zhangsan
del lisi
输出:
3.继承
子类能够继承父类中所有的非私有的成员变量和成员函数
class 子类名(父类名)
类属性=初值
方法(参数列表)
ex:
class Person:
money=23423
def hello():
print('hello man!')
class Student(Person):
pass
amy=Student()
print(amy.money)
Student.hello()
输出:
23423
hello man!
四.文件
1.打开文件
文件对象=open(文件名,访问模式)
文件名:文件路径
访问模式:
2.关闭文件 .close()
3.读取文件read(字节数) / readline(字节数)【只输出文本中的一行】
文件对象.read(字节数)
字节数为总共输出几个字符
ex.
f=open("E:/File_/deep learning/text/mypython.txt")
print(f.read(3))
f.close()
4.写入文件 write(写入内容)
首先要确保open()函数的访问模式是支持写入的,不然会报错
f=open("E:/File_/deep learning/text/mypython.txt",'w')
f.write('w ri ni ma')
f.close()
5.异常处理try-except
try:
aList=[0,1,2]
print(aList[3])
print('try语句块继续执行中……')
except IndexError as e:
print(e)
print ("异常已处理")
print('程序继续执行')
输出:
list index out of range
异常已处理
程序继续执行
finally子句
finally语句块的内容是无论如何一定会执行的语句块,一般都将关闭文件,清除资源的操作放在这个语句块中
ex:
try:
print("try语句块开始")
f=open('c:/test/txt')
print("try语句块结束")
except IOError as e:
print("except子句")
print(e)
finally:
print("finally子句")
f.close()
输出:
try语句块开始
except子句
[Errno 2] No such file or directory: 'c:/test/txt'
finally子句
六.上下文管理
with语句(可以替代try-finally语句)
利用with语句打开文件就不许要额外的关闭语句的函数了,因为本身就已经包含了关闭文件的操作
ex:
with open('E:\File_/deep learning/text/mypython.txt')as f:
print(f.read())
with语句
对于那些事先需要设置,事后需要做清理工作的操作,可以利用with使其方便处理
with 上下文管理器表达式[as 变量]:
语句块
__ enter __() 方法和 __ exit __()方法,定义在 类 中
ex:
class File():
def __init__(self,filename,mode):
print("执行init()方法")
self.filename=filename
self.mode=mode
def __enter__(self):
print("执行enter()方法")
self.f=open(self.filename,self.mode)
return self.f
def __exit__(self,*args):
self.f.close()
print("执行exit()方法")
with File('E:\File_/deep learning/text/mypython.txt','r')as f:
print(f.read())
输出:
执行init()方法
执行enter()方法
w ri nima
执行exit()方法
总结
这两天把Python的基础语法都过了一遍,为后面学习tensorflow打下基础