首页 > 编程语言 > 详细

python笔记007-函数

时间:2019-07-22 21:10:41      阅读:79      评论:0      收藏:0      [点我收藏+]

昨日简要:

1.文件操作:
1.1获得句柄:

     f = open(‘one.txt’,mode=’’,encoding=’utf-8’)

     f = open(‘../’) à返回上一层

     f = open(‘D:\test2\one.txt’,mode=’’,encoding=’utf-8’)

1.2 mode(模式)

     mode = ‘r’’w’’r+’’w+’’a+’’rb’’wb’’ab’’r+b’’w+b’’a+b’

     (最常用的是 ‘r+’,)

     如果用’b’open,open句柄不要写encoding,其余地方记得带encoding。

1.3 光标 seek()

seek(0,0) ß à seek(0) 光标在开头

seek(0,2) 光标在结尾

     光标 tell() à报告当前光标位置

      truncate([size])  à截断文件,如果有可选参数size,则表示截断文件为 size 个字符。如果没有指定size ,则从当前位置起截断,截断之后size后面的所有字符都被删除。

1.4 strip()

去掉空格、换行(\n)

1.5 readline

readline à 内存容易爆炸

解决内存问题 :循环取 for line in f:

1.6 with

文件操作句柄

import os
#方法一
def test10():
    #打开文件,创建新文件
    with open("day008/day_008_1.txt",mode=r,encoding=utf-8) as f1,        open("day008/day_008_1_new.txt",mode=w,encoding=utf-8) as f2:

        content = f1.read()
        new_content = content.replace(飞将,李广) # 替换内容
        f2.write(new_content)   # 写到 f2 中
    os.remove(day008/day_008_1.txt) #删除原文件
    os.rename(day008/day_008_1_new.txt,一生未封侯.txt) #

# 方法二
def test11():
    f1 = open("day008/day_008_1.txt", mode=r, encoding=utf-8)
    f2 = open("day008/day_008_1_new.txt", mode=w, encoding=utf-8)
    for line in f1: #一行一行取
        new_line = line.replace(李广,飞将)
        f2.write(new_line)
    os.remove(day008/day_008_1.txt)
    os.rename(day008/day_008_1_new,李广特点守)
    f2.flush()

今日内容:

1.   冒泡排序:前后相互比较大小

 1 # 冒泡排序
 2 li = [12,23,3,6,5,34,16,37,2]
 3 li1 = len(li)
 4 while li1>0:
 5     for i in range(li1 - 1):
 6         if li[i] > li[i + 1]:
 7             l = li[i]
 8             li[i] = li[i+1]
 9             li[i+1] = l
10             # li[i],li[i+1]=li[i+1],li[i]
11     li1 -=1
12 print(li)
详解参考菜鸟教程:https://www.runoob.com/python3/python-bubble-sort.html

2.   函数:

2.1  函数的概念:对代码块和功能的封装、定义。先定义--> 调用;“函数”就像一个程序内的小程序

2.2  函数的定义:

def 函数名() :

        代码块 -- 函数体

           函数的调用:

                直接写函数名

函数的一个主要目的就是将需要多车执行的代码放在一起。

  •  return 返回值:

           返回一个值

           返回多个值,返回的是一个(元组)。

  • 遇到return时,函数结束。函数后面的代码块不再执行。
  • return这句话如果不写(或没有内容),默认返回None

2.3 函数的参数:

  • ·形参:写在函数声明处位置的变量,形式上是一个完成整的参数,表示这个函数需要‘它/它们’。
  • ·实参:写在函数调用时,形参相应位置的值。实际执行的时候给函数传递具体内容。表示给函数‘它/它们’。

参数分类:

  • 位置参数,在传参过程就中把‘a’‘b’按照声明处形参的位置顺序依次给他们赋值。
  • 关键字参数:不需要记忆每个参数的位置,只要记住参数的名字就好了。。
  • 混合参数:位置参数和关键字参数的混合使用

小结:

        位置参数(按照顺序,依次赋值)

        关键字参数(只需要记住关键字,实参中给关键字赋值)

        混合参数(位置参数必须在关键字参数的前面。)

        ·默认值参数:在函数声明时,直接给出函数参数的默认值。在调用的时候默认值输出这个值,也可以在实参上修改。

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

 

当args与位置参数默认参数混用的情况下:(注意三者的顺序)

示例一、(三者顺序是:位置参数、默认参数、*args)

1 def foo(x,y=1,*args):
2    pass
3 foo(1,2,3,4,5)#其中的x为1,y=1的值被2替换,3,4,5都给args,即args=(3,4,5)

示例二、(三者顺序是:位置参数、*args、默认参数)

1 def foo(x,*args,y=1):
2     pass
3 foo(1,2,3,4,5)#其中的x为1,2,3,4,5都给args,即args=(2,3,4,5),y始终为1

**kwargs: (表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现)。关于**kwargs与位置参数、*args、默认参数混着用的问题(注意顺序)

位置参数、*args、**kwargs三者的顺序必须是位置参数、*args、**kwargs,不然就会报错;

实例:

1 def foo(x,*args,**kwargs):
2     pass
3 foo(1,2,3,4,y=5,a=6,b=7)
4 #其中的 x 为1 , 2、3、4都给args,即args=(2,3,4),y=5,a=6,b=7以字典形式传给kwargs 即kwargs= {‘y‘:5,‘a‘:6,‘b‘:7}

3.   None值

     在Python中有一个值称为 None,它表示没有值。None 是 NoneType(空字节)数据类型的唯一值(其他编程语言可能称这个值为null,nil

或undefined)。就像布尔值 True 和 False 一样,None 必须大写首字母。

     如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可能有用。有一个使用None的地方就是print() 的返回值。print()函数在屏幕上显示文本,但它不需要返回任何值,这和len() 或 input() 不同。但既然所有函数调用都需要求值为一个返回值,那么print() 就返回None.

1 >>>span = print(‘hello!’)
2 hello!
3 >>>None = span
4 True

     在幕后,对于所有没有 return 语句的函数定义,Python都会在末尾加上return None。这类似于 while 或 for 循环隐式地以 continue语句结尾。而且,如果使用不带值的return 语句(也就是只有return关键字本身),那么就返回None。

4.   总结

站在实参的角度:

  1. 位置参数
  2. 关键字参数
  3. 混合参数 (关键字参数放在位置参数后面)

站在形参的角度:

    1. 位置参数
    2. 默认值参数
    3. 默认值参数和位置参数混合使用。顺序:先写位置参数,在写默认值参数。

python笔记007-函数

原文:https://www.cnblogs.com/oito/p/11228230.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!