python 初始函数

文件的'改'

with open('1234567','r',encoding='utf-8') as f1,open('1234567.bak','w',encoding='utf-8') as f2:
    for line in f1:
        if '未知' in line:
            line = line.replace('未知','')
        f2.write(line)

import os
os.remove('1234567')
os.rename('1234567.bak','1234567')

python中文件并没有意义上的改,这段代码的本质是读取文件到pycharm中,更改内容并添加到一个新建的文件中,然后删除原文件

再将新建的文件命名成原文件

初始函数

定义函数 函数的调用

s = '陈帅是陈明的哥'
def my_len():
    i = 0
    for a in s:
        i += 1
    print(i)
f = my_len()
print(f)

7
None

函数定义了之后可以在任何需要它的地方调用

但是不能改变,只能做到函数内代码的作用

没有返回值,只是单纯的打印

返回值

return xxx                   求返回值,后面加上要求返回值的变量的变量名

s = '陈帅是陈明的哥'
def my_len():
    i = 0
    for a in s:
        i += 1
    print(i)
    return i
f = my_len()
print(f)

7
7

返回值的三种情况

没有返回值的,默认返回None

没有返回值

不写return                 没有要求返回值

s = '陈帅是陈明的哥'
def my_len():
    i = 0
    for a in s:
        i += 1
    print(i)
f = my_len()
print(f)

7
None

只写return                 没有要求返回什么的返回值

s = '陈帅是陈明的哥'
def my_len():
    i = 0
    for a in s:
        i += 1
    print(i)
    return
f = my_len()
print(f)

7
None

return None               返回值空

s = '陈帅是陈明的哥'
def my_len():
    i = 0
    for a in s:
        i += 1
    print(i)
    return None
f = my_len()
print(f)

7
None

return是结束一个函数,执行到return后面的代码便不执行了,跳出该函数

返回一个值

可以返回任何的数据类型

只要返回,就可以接受到

如果在一个程序中有多个return,只执行第一个

def my_len():
    return 1
    return 2
f = my_len()
print(f)

1

返回多个值

多个返回值用多个变量接收,有多少返回值就要有多少变量

用一个变量接收多个返回值,得到的是一个元组

def my_len():
    return 1,2,[1,2,3,],('k','v')
    return 1,2,3,4
f = my_len()
print(f)

(1, 2, [1, 2, 3], ('k', 'v'))

参数

没有参数

定义函数和调用函数时括号里都不写内容

有一个参数

传什么就是什么

有多个参数

位置参数

站在实参的角度上:

按照位置传参

按照关键字传参

可以混用:但必须先按照位置传参,再按照关键字传参,不能给同一个变量传多个值

站在形参的角度上:

位置参数:必须传,且有几个参数传几个值

默认参数:可以不传,如果不传就是用默认参数,传了参数就用传来的参数

只有调用函数的时候

按照位置传:直接写参数的值

按照关键字:关键字=值

定义函数的时候

位置参数:直接定义参数

默认参数:关键字参数:参数名='默认的值'

动态参数:可以接受任意多个参数

  *args :可以传任意参数,参数名前面加*,args是个约定俗成的参数名

  接收的是按照位置传参的值,组成一个元组

  **kwargs:用来接受不知道多少个关键字参数(其它大约同上)

  接收的是按照关键字传参的值,组织成一个字典

顺序:位置参数,*args,默认参数,**kwargs

动态参数的另一种传参方式:

站在一个实参的角度上,给一个序列加上*,就是将这个序列按照顺序拆分

站在形参的角度上,给变量加上*,就是组合所有传来的值

函数的注释

在定义函数的下一行

这个函数实现了什么功能

参数1说明

参数2说明

返回值说明

 

原文地址:https://www.cnblogs.com/GrandDarkness/p/8118332.html