老男孩Day9

Posted dymlnet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老男孩Day9相关的知识,希望对你有一定的参考价值。

今天是在老男孩学习的第9天,大致内容整理如下:

昨日总结及补充:

  读:

    read()  一次性读

    readline()  一行一行读,本身无结束

    readlines()  一次性读完后生成列表

 

  写:

    write  需要换行则加上 \\n

  

  光标:文件指针

    seek  指定光标移动的位置

    tell  获取光标位置

    truncate  截取文件

    

  关闭文件:

    close

 

import os

os.remove(‘‘)  删除文件

os.rename(‘‘,‘‘)  重命名文件

 

函数基础

基本格式

  

def new_len():
    s = aaaaaa
    h = 0
    for i in s:
        h = h + 1
    print(h)
print(new_len())

我们定义一个函数,功能是为了检测字符串的个数。定义函数必须要在前方加上def,函数名称一定要一致,同时和变量的命名规范一样。

 

def new_len():
    s = aaaaaa
    h = 0
    for i in s:
        h = h + 1
    return h
print(new_len())

在函数中加入return即可定义返回值。同时return下面的函数部分的代码将直接忽略,不会执行

还要注意,我们上文定义的new-len是没有意义的,因为这个函数不能调用只能输出特定字符串的值,因此需要改进

i = input(>>>)
def new_len(s):
    h = 0
    for i in s:
        h = h + 1
    return h
print(new_len(i))

 

 

技术分享图片

这样的就可以做到用户输入然后输出位数,那么在函数中s是函数的接收部分,他不知道s是什么,所以叫做 形参 。而i部分是用户输入的部分,它叫做实参。

 

 

函数的3种情况:

  没有返回值:不写return或者return后不带变量

def new_len():
    s = aaaaaa
    h = 0
    for i in s:
        h = h + 1
print(new_len())
def new_len():
    s = aaaaaa
    h = 0
    for i in s:
        h = h + 1
    return 
print(new_len())
def new_len():
    s = aaaaaa
    h = 0
    for i in s:
        h = h + 1
    return None
print(new_len())

技术分享图片三种结果都是一样的,返回None

 

返回一个值:

  可以返回任何数据类型

  只要返回了就可以接收到

  如果在一个程序中有多个return则只执行第一个后就结束函数了

  如果要接受多个实参则需要使用逗号隔开

  

v = input(>>>)
k = input(>>>)
sum = 0
def sum(v,k):
    sum = int(v) + int(k)
    return sum
print(sum(v,k))

 

返回多个值:

  多个返回值用多个变量接受,也可以用一个变量接受,那么得到的是一个元祖

def ret_demo2():
    return 1,[a,b],3,4
ret = ret_demo2()
print(ret)

技术分享图片

 

参数:

  没有参数  定义函数或者调用函数时括号内不写内容

  有一个参数  传什么就是什么

  有多个函数  位置参数,与新参一一对应,用逗号隔开

  站在实参角度:

    按照位置传参

    按照关键字传参

def sum(v,k):
    sum = int(v) + int(k)
    return sum
print(sum(v=2,k=1))

    两种方式可以混用但是要注意顺序是先位置传然后关键字传。同时不能给同一个变量传多个值,报错

def sum(v,k):
    sum = int(v) + int(k)
    return sum
print(sum(2,k=1))

 

 

站在形参角度:

  位置参数  必须要传而且是有几个传几个

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

def sum(v,k=1):
    sum = int(v) + int(k)
    return sum
print(sum(2))
print(sum(v=2))

 

当定义函数时

  位置参数:直接定义参数

  默认参数(关键字参数):参数名 = ‘默认值’

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

 

动态参数:

  当我们想要接收多个参数时需要用到动态参数

 

  *args

def arg(*args):
    for i in args:
        print(i)
    return i
k = [1,2,3,4,5,6,7,8,9]
print(arg(k))

只能传输按照位置传参的值,成元祖

 

  **kwargs

def stu_info(**kwargs):
    print(kwargs)
    print(kwargs[name],kwargs[sex])

stu_info(name = alex,sex = male)

 

两者可以混用,但是args必须在kwargs之前

总结:站在实参角度:给一个序列加 * 就是将这个序列按照顺序打散。站在形参角度:给这个变量加上 * 就是组合所有传来的值

 

函数的注释要注释在函数的开头说明函数的作用等

以上是关于老男孩Day9的主要内容,如果未能解决你的问题,请参考以下文章

老男孩Python 课堂笔记_Day2

老男孩Day11

老男孩python学习笔记一

老男孩DAY1作业二

老男孩MySQL DBA教程

老男孩python基础知识练习题中