Python学习笔记 第九天

1.上次内容回顾

   1.1 文件操作

           1.1.1 文件获取(获得句柄)

                      f = open("文件名",mode = '',encoding = '')

                     mode = '文件打开方式‘

                     r w r+ w+ a+ rb wb ab r+b w+b a+b

                     最常见: r+ b+

                     encoding = ''文件编码

                     常见文件编码请自行百度

                     f = open('..')(返回上一层)

                     f = open('D:....')(文件的绝对路径)

                   注意:如果用'b'open,open句柄,不要写encoding

         1.1.2 光标

                   seek()

                  seek(0,0)-->seek(0) 光标在开头

                  seek(0,2)-->seek(2) 光标在结尾

                 tell() 报告当前光标位置

                 truncate() 截断文件,保留前者,清空后者

                              无返回值

                   deeping-bug

          1.1.3 文件格式整理

                   1.1.3.1 去空格

                             strip() 去掉空格

                            (\n)换行

                  1.1.3.2 读取

                            readline()

                           readlings()-->容易溢出导致内存爆炸

                         *解决内存问题:循环读取

                          for line in f:

                 1.1.3.3 with操作

                          with 文件操作句柄 1 as f1,\

                          文件句柄 2 as f2:

                         其余文件在with结构下写

       1.1.4 os 系统操作

                        replace():替换操作

                       os.remove():删除操作

                       os.rename():重命名操作

2.今日所学内容

    2.1 函数

          2.1.1 函数:对代码块的封装与定义

                     先定义-->后调用

         2.2.2 定义函数

                  def 函数名 (传入参数):

                 函数体<-->代码块

                 注意:根据实际情况自行决定是否传参,

                           若为空,默认不传参

         2.2.3 调用函数

                             直接使用函数名调用函数即可

                  注意:如定义的函数需要传递参数,注意传参

          2.2.4 return

                          1.结束函数,后面的函数或者代码块不再继续执行,相当于break

                          2.可以返回一个或者多个值,返回单个值默认以对应类型串形式输出,

                             返回多个值默认以元组形式输出,但可以使用解包使其返回对应类型

                          3.若不写return 或者return后没有内容,默认返回None

                          4. 若return返回的是一个表达式,那么边先计算表达式然后再返回对应类型的计算结果

         2.2.5 函数参数&函数的传参

                  2.2.5.1 定义

                             函数在调用是制定具体的变量的值,便是参数

                 2.2.5.2 函数的调用者:实参,形参

                            2.2.5.2.1 实参:

                                      是调用函数时传递给函数的信息,调用时将信息传递给函数的形参;写在调用函数时,形参相应的位置,实际执行时为函数传递具体内容

                           2.2.5.2.2 形参:

                                     写在函数声明处位置的变量,形式上是一个完整的参数;函数完成其工作所需要的一项信息。

                          2.2.5.2.3 传参:

                                     将实际参数传递给形式参数的过程。

                         2.2.5.2.4 实参的类型:

                                    位置参数 默认参数 动态参数 仅限关键字参数

                               2.2.5.2.4.1 位置参数

                                         位置参数,又称形式参数,是必传参数,如果不填入,调用时会出错,

                                 给参数一个提醒类型:调用时可以传入不同类型的参数,不受影响。

# 1. 位置参数。: 从左至右,按照顺序,一一对应
def meet(sex,age,job,):
    print('左划一下')
    print('右划一下')
    print(f'寻找性别{sex},年龄{age}岁,{job}')
    print('聊天')
    print('约吗')
    print('约....')
meet('','18~25','讲师')

 

                               2.2.5.2.4.2 默认参数

                                         形如xxx=xxx的格式,是非必传参数,如果调用时不填,就使用定义时的默认值。

                                调用时填,就使用填的值。

# open('文件的改',encoding='utf-8')
def meet(age,job,sex=''):
    print('左划一下')
    print('右划一下')
    print(f'寻找性别{sex},年龄{age}岁,{job}')
    print('聊天')
    print('约吗')
    print('约....')
# meet('18~25','幼师')
# 更改默认参数
# meet('18~25','幼师',sex='laddy_boy')
meet('18~25','幼师','laddy_boy')

 

                               2.2.5.2.4.3 动态参数

                                            是非必传参数,使用参数名前面加一个星号表示,它把传入的元素都存到一个元组里。

                                    不限制传入参数的个数。适用于用在参数比较多的时候,通常使用args作为参数名。

def func(*args,**kwargs):  # 函数的定义:*将实参角度的所有的位置参数聚合成一个元组给了args **将实参#角度的所有的关键字参数聚合成一个字典给了kwargs 聚合。
    pass
func(*[1,2,3],**{'name': 'alex'})  # 函数的执行:* ** 打散。

 

 

                              2.5.2.4.4 仅限关键字参数

                                             是非必传参数,使用参数名前面加两个星号表示,不限制传参个数,它是把传入的参数

                                     保存在一个字典里,如果传参,必须要传位置参数这种xx=xx的格式,否则报错。

                                             通常使用kwargs当做变量名。

def meet(sex,age,job,hight,weight,):
    print('左划一下')
    print('右划一下')
    print(f'寻找性别{sex},年龄{age}岁,身高{hight},体重{weight},工作{job}')
    print('聊天')
    print('约吗')
    print('约....')

# meet(sex='女',job='学生',weight=120,hight=170,age='18~25')

 

 

                       2.2.5.2.5 参数的组合使用

                                            如果一个函数中必须要使用四种参数的两种及以上,那么一定要按照顺序写参数:

                                         (1)位置参数(2)默认值参数(3)可变参数(4)关键字参数

# def meet(sex,age,job,hight,weight,):
#     print('左划一下')
#     print('右划一下')
#     print(f'寻找性别{sex},年龄{age}岁,身高{hight},体重{weight},工作{job}')
#     print('聊天')
#     print('约吗')
#     print('约....')
#
# meet('男',222,'IT python',weight=120,hight=175,)

                 

                 2.2.5.3 三元运算符

                            三元运算又称三目运算,是对简单的条件语句(仅限于简单的判断,复杂不适用)的简写,如:

            简单条件语句

class Teacher():
def __init__(self,name,age):
self.name = name
self.age = age

def compare(teacher1,teacher2):
if teacher1.age > teacher2.age:
return teacher1.name
elif teacher1.age == teacher2.age:
return '一样大'
else :
return teacher2.name
t1 = Teacher(input("请输入一号老师的姓名:"),int(input('请输入一号老师的年龄:')))
t2 = Teacher(input("请输入二号老师的姓名:"),int(input('请输入二号老师的年龄:')))
print(compare(t1,t2))

           改成三元运算:

result = teacher1.name if teacher1.age > teacher2.age else teacher2.name
return result

 

注:此三元运算表达式逻辑上不严谨,还请读者自行找出错误并加以改正

 

posted on 2019-07-22 15:09  离影花未央  阅读(156)  评论(0编辑  收藏  举报

导航