Python学习笔记

实验一Python的安装与简单程序练习

1.python比起其他高级语言简洁很多,比如不需要头文件,不需要大括号,if语句的划分只要缩进,每行代码末尾不需要;作为结尾,变量不需要声明类型等等。

2.Python有许多函数,需要应用才能掌握。

①map()用于依次将项目发给函数进行运行;

②split()是分割函数,语法:str.split(str="",num=string.count(str))[n],冒号内是分割符号,括号内的str代表是几个分成一份,n代表取出分成的第几份;

③eval()返回传入表达式的结果,实际上是去除双引号,可以用于list转化成数字和其他类型的数据结构。

3.Python中input的返回值默认是list,list不能强制转化为int,float。因此用eval函数。

4.List中[x:y]x代表起始的位置,y代表步长,因此此处[0:-1]可以代表最后一个,因为y比x小说明是倒序,0代表第一个,第一个的前一个就是最后一个。

此处的列表知识:

list1[:n]表示从列表list1第0个元素开始截取至第n个元素(不包括第n个元素)

list1[n:]表示从列表list1第n个元素开始截取至最后一个元素(包括第n个元素)

list1[a:b:c]表示从列表list1第a个元素开始截取至第b个元素步长为c(不包括第b个元素)
5.turtle()海龟可以用于画图。

基本方向的控制circle()画圆,fd()直行。

实验2Python基本类型与内置函数

  1. 注意缩进
  2. 使用import

实验3 Python序列操作

  1. 输入多个值存入列表只需要用eval,但是输入要以[]的形式,不要定义长度
  2. Range()从0开始到目标数字即代表x个
  3. 排序函数有两种(1)list.sort()在原列表中排序(2)sorted(list,reverse=)返回新的列表
  4. str.join(“”)在字符串str中加入
  5. Random的使用
  • random.digits0-9
  • random.ascllletters大小字母
  • random.random()
  • random.shuffle()打乱
  1. dic.get()返回键值(key)为该值的值(item),此处代表若找不到键值为ch的值则返回0

实验4 选择与循环结构

  1. 取消python中自带的换行用print(“”,end= )
  2. eval()可以用于取出只输入一个数时的值
  3. map()可以用于取出输入多个数时的值,具体用法为map(数据类型,input().split())
  4. List的建立可以为list=[],但是后续插入要用append等函数;也可以用list=[]*length
  5. math.ceil向上取整,//向下取整
  6. math.round()四舍五入(但是是奇数才入,偶数不进位)
  7.   当输出时用到了迭代输出的数时要把输出的部分全部转换为字符串

     8.列表的初始化

list = []
for i in range(1,n+1):
    list.append(i)

列表的倒置 list.reverse()

实验5 字符串与正则表达式

1.python中的string库带有对数字、大小写字母、符号的分类。因此可以直接使用。

 

2.chr( )和ord( )的使用

chr ( )是将数字转变成对应ASCLL码的字符,返回值类型是string。

ord ( )是返回对应的字符串的ASCLL码或Unicode码,返回值类型是int。

3.字符串输出的格式化

grade="%.2f%%"%(correct*100/len(origin))

(1)可以在输出部分直接使用%

    格式为”***** %X.X数据类型 *****”%(value) 这里没有,

(2)使用format( )函数

S=”xxx{str1}xxx{str2}xxx”.format(str1= ,str2=” ”)

print(S)

(3)使用f.using

print(f’xxx {str1},xxx{str2:%Y},xxx{int+1}’)

4.正则表达式

通过限定条件找到需要的内容。

常用的符号:

 

这部分需要引入re模块。

常使用的函数有search(搜索),match(匹配),compile(输出找到的单个),findall(输出找到的多个),sub(替换)。

实验6 函数设计与使用

1.函数参数分为三种,默认值参数、关键参数和可变长度参数。默认值参数在使用函数时设置默认初值,关键参数可以使得函数的参数传递方式与传入参数的位置无关,可变长度参数表示可以接受任意多个位置的实参,在参数前加*号放入元组中,**放入字典。

2.变量作用域常见全局变量和局部变量。全局变量加global否则在局部作用域内会被认为同名局部变量。Nonlocal变量引用最近的外层函数中的同名变量。

3.lambda表达式:lambda 参数 表达式,结果是表达式的返回值。

4.Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和函数属性。

实验7 面向对象程序设计

1.类的创建

class 类名( ):

类成员

def __init__(self):

  1. __xx 私有成员
  2. __xx__ 特殊成员
  3. @property的两种使用
(1)修饰方法,是方法可以像属性一样访问(后面不加括号)。

class DataSet(object):

  @property

  def method_with_property(self): ##含有@property

      return 15

  def method_without_property(self): ##不含@property

      return 15

l = DataSet()print(l.method_with_property) # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。print(l.method_without_property())  #没有加@property , 必须使用正常的调用方法的形式,即在后面加()

两个都输出为15。

class DataSet(object):

  @property

  def method_with_property(self): ##含有@property

      return 15l = DataSet()print(l.method_with_property()) # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。

如果使用property进行修饰后,又在调用的时候,方法后面添加了(), 那么就会显示错误信息:TypeError: 'int' object is not callable,也就是说添加@property 后,这个方法就变成了一个属性,如果后面加入了(),那么就是当作函数来调用,而它却不是callable(可调用)的。

class DataSet(object):

  def method_without_property(self): ##不含@property

      return 15l = DataSet()print(l.method_without_property #没有加@property , 必须使用正常的调用方法的形式,即在后面加()

没有使用property修饰,它是一种方法,如果把括号去掉,不会报错输出的就会是方法存放的地址。

 

(2)与所定义的属性配合使用,调用某个成员采用几乎同名的方法调用,从而隐藏真实的属性名,这样可以防止属性被修改。

​ 由于python进行属性的定义时,没办法设置私有属性,因此要通过@property的方法来进行设置。这样可以隐藏属性名,让用户进行使用的时候无法随意修改。

class DataSet(object):

    def __init__(self):

        self._images = 1

        self._labels = 2 #定义属性的名称

    @property

    def images(self): #方法加入@property后,这个方法相当于一个属性,这个属性可以让用户进行使用,而且用户有没办法随意修改。

        return self._images 

    @property

    def labels(self):

        return self._labelsl = DataSet()#用户进行属性调用的时候,直接调用images即可,而不用知道属性名_images,因此用户无法更改属性,从而保护了类的属性。print(l.images) # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值