• Python学习笔记-Day9


    内容大纲:
    一、函数初识

    二、函数的返回值

    三、函数的传参

    一、函数初识

    1、什么是函数 :

    函数是组织好的,可重复使用的,用来实现单一、或相关联功能的代码,函数能提高应用的模块性和代码的重复利用率。

    函数的优点:减少代码重复率,增强代码阅读性

    函数的主要目的:封装一个功能

    2、函数的定义和调用

    #函数的定义
    def my_len():
        '''计算s1的长度'''
        s = 'dahjd'
        length = 0
        for i in s:
            length += 1
        print(length)
    #函数的调用
    my_len()

    定义:

    def:关键字开头,空格之后接函数名称和括号,最后还有一个' : '

    空格:为了将def关键字和函数名隔开

    函数名:函数名只能包含数字、字符串和下划线组成,不能以数字开头,和变量名的组成方式相同

    括号:必须加

    注释:每一个函数都应该对功能和参数进行说明

    调用:

    就是函数名(),一定要加括号。函数的执行者

    二、函数的返回值return

    1、函数中如果遇到return则直接结束函数

    def func1():
        print(111)
        print(222)
        return
        print(333)
    
    func1()
    结果是:
    111
    222

    2、给函数的执行者返回值

    ①没有返回值:返回给函数执行者None

    def func1():
        a = 1
        b = 2
        return
    
    print(func1())
    
    执行结果:None

    ②返回一个值:return单个值,将该值原封不动的返回

    def func1():
        a = 1
        b = 2
        return a
    print(func1())
    执行结果:
    1

    ③返回多个值:return多个值,返回元组类型,返回值作为元组中的元素

    def func1():
        a = 1
        b = 2
        c = 'hello'
        d = [1,2,3]
        return a,b,c,d
    print(func1())
    执行结果:(
    1, 2, 'hello', [1, 2, 3])

    三、函数的传参

    1、实参:在函数执行者里面的参数叫实参

    ①位置参数:按顺序和形参一一对应

    def compare(x,y):
        ret = x if x > y else y   #三元运算,针对简单的if else才能使用
        return ret
    
    print(compare(123,122334))
    执行结果:
    122334

    ②关键字参数:可以不按顺序,但是必须一一对应

    def compare(x,y):
        ret = x if x > y else y
        return ret
    
    print(compare(y=13,x=1))
    
    执行结果:13

    ③混合参数:关键字参数一定要在位置参数后面

    def func1(a,b,c,x,y):
        a = 1
        b = 'hello'
        return a,b,c,x,y
    name = 'tt'
    print(func1(1,2,name,y=10,x=20))
    
    执行结果:
    (1, 'hello', 'tt', 20, 10)

    2、形参:

    ①位置参数:按顺序和实参一一对应,位置参数必须传值

    ②默认参数:给其传值,默认参数覆盖,不传值,不报错,使用默认参数

    def name_list(name,sex = 'male'):
        '''将姓名/性别写入文件'''
        with open('namelist',encoding='utf-8',mode='a') as f1:
            f1.write('{}	/{}
    '.format(name,sex))
    
    while 1:
        name,sex = input('请输入姓名/性别,以“、”隔开:').strip().replace('',',').split(',')
        if sex.strip():  #当性别不为空时即有输入性别时,默认参数被覆盖
            name_list(name,sex)
        else:
            name_list(name) #当没有输入性别时,使用默认参数

    ③动态参数:不定长传参,在需要传递的参数很多不定长的情况下,就用*args、**kwargs接收。

    args是元组形式,接收除键值对以外的所有参数,kwargs只接收键值对的参数,并保存在字典中。

    def trans_para(*args,**kwargs):
        print(args,type(args))
        print(kwargs,type(kwargs))
    
    trans_para(1,'hello',[1,2,3],{'name':'weng'},name = 'weng')   #键值对一定要在最后
    
    执行结果:
    (1, 'hello', [1, 2, 3], {'name': 'weng'}) <class 'tuple'>
    {'name': 'weng'} <class 'dict'>
  • 相关阅读:
    打印空格
    进程间的通信
    堆排序算法
    大小端的判断
    bash help
    [Android] How to disable the screen orientation?
    图片的静态动态显示效果
    WPF Threads: Build More Responsive Apps With The Dispatcher
    用node.js+express自建网站发布静态网页
    利用Apache mod_expires 与 mod_headers 实现文件缓存及mod_deflate压缩输出
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9482395.html
Copyright © 2020-2023  润新知