一:学习内容

  • 函数概述
  • 函数的参数与返回值
  • 参数值传递和引用传递
  • 关键字参数
  • 默认参数
  • 不定长参数

二:函数概述

1.本质:函数就是对功能的封装

2.优点:

简化代码结构,增加了代码的复用度(重复使用的程度)
如果想修改某些功能,只需要修改对应的函数即可

3.函数定义

格式:
def 函数名(参数列表):
    语句
    return 表达式

注意:最后的return 表达式,可以不写,相当于return None

举例:

def myPrint():
    print("tester is a good girl!")
    print("tester is a nice girl!")
    print("tester is a beautiful girl!")

4.函数调用

格式:函数名(参数列表)

注意:参数列表是函数的调用者给函数传递的信息,如果没有参数,小括号也不能省略

函数调用的本质:实参给形参赋值的过程

举例:

myPrint()

三:函数参数与返回值

1.无参无返回值的函数

举例:

#定义了一个无参无返回值的函数
def myPrint():
    print("tester is a good girl!")
    print("tester is a nice girl!")
    print("tester is a beautiful girl!")

#调用
myPrint()

2.函数的参数--参数必须要按顺序传递,个数必须要对应

形参(形式参数):定义函数时小括号中的变量,本质是变量

实参(实际参数):调用函数时给函数传递的数据,本质是值

举例:

def myPrint(str,age):
    print(str,age)

#调用

a = 18
myPrint("tester",a)

3.函数的返回值

def mySum(num1,num2):
    #将结果返回给函数的调用者
    #执行完return语句,该函数就结束了,return后面的代码语句不执行
    return num1+num2

#调用
print(mySum(3,2))

四:参数值传递和引用传递

1.值传递:传递的是不可变类型(数字、字符串、元组),不改变原值

举例:

def fun1(num):
    num = 10

temp = 20
fun1(temp)
print(temp)

2.引用传递:传递的是可变类型(列表、字典、集合),改变原值

举例:

def fun2(lis):
    lis[0] = 100

li = [1,2,3,4]
fun2(li)
print(li)

五:关键字参数

1.关键字参数:允许函数调用时参数的顺序与定义时不一致

def myPrint(str,age):
    print(str,age)

a = 18
#未使用关键字参数,传参必须与定义参数的顺序一致
myPrint("tester",a)

#使用关键字参数,但是正常情况下还是保持参数顺序和定义顺序一致
myPrint(age=19,str="tester")

六:默认参数

1.默认参数:调用函数时,如果没有传递参数,则使用默认参数

举例1:

def myPrint(str="tester",age=18):
    print(str,age)

myPrint()

举例2:
#要用默认参数,最好将默认参数放到最后
def myPrint(str,age=18):
    print(str,age)

myPrint("tester")

七:不定长参数--能处理比定义时更多的参数

1.接受元组数据

不定长参数第一种写法 *args,*args为元组类型,*代表元组数据

举例1:

#加了星号(*)的变量会存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组
def func(name,*args):
    print(name)  #会打印第一个tester
    print(type(args))   #是个元组
    for i in args:
        print(i)  #会打印后续的is a good girl

func("tester","is","a","good","girl!")

#不给定后面的*arr参数
func("tester")

举例2:求多个数的和
def mySum(*num):
    sum = 0
    for i in num:
        sum += i
    return sum
print(mySum(1,2,3,4))

2.接受字典键值对类型数据

不定长参数第二种写法 **kwargs,**kwargs为字典类型,**代表键值对数据

举例1:

def func2(**kwargs):
    print(kwargs)
    print(type(kwargs))

func2(x=1,y=2,z=3)

func2(1,2,3)  #会报错

3.接受任意类型数据

*args为元组类型,*代表元组数据
**kwargs为字典类型,**代表键值对数据

举例:

def func3(*args, **kwargs):
    print(args)   #会打印(1, ('a', 2), [1, 2], {1, 2})
    print(kwargs)  #会打印{'x': 1, 'y': 2, 'z': 3}

func3(1,("a",2),[1,2],set([1,2]),x=1,y=2,z=3)

python3笔记十五:python函数的更多相关文章

  1. python3笔记十:python数据类型-Tuple元组

    一:学习内容 元组概念 元组创建.访问.删除 元组操作 元组方法 二:元组概念 1.本质:是一种有序集合 2.特点:与列表非常相似.一旦初始化就不能修改.使用小括号 三:元组创建 1.创建空元组 tu ...

  2. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  3. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  4. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  5. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  6. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

  7. 孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归

    孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python函数非常的灵活,今天学习了python函数的以 ...

  8. python学习笔记十——模块与函数

    第五章 模块与函数 5.1 python程序的结构 函数+类->模块              模块+模块->包                 函数+类+模块+包=Python pyth ...

  9. python3笔记十四:python可变与不可变数据类型+深浅拷贝

    一:学习内容 python3中六种数据类型 python赋值 python浅拷贝 python深拷贝 二:python3六种数据类型 1.六种数据类型 Number(数字) string(字符串) L ...

随机推荐

  1. sql server update语句

    update语句 --Update 语句用于修改表中的数据 语法:update 表名称 set 列名称 = 新值 where 列名称 = 某值 --更新某一行的若干列,set字句中用','隔开

  2. 三剑客-awk(简写)

    特殊要点:$0 表示整个当前行$1 每行第一个字段NF 字段数量变量NR 每行的记录号,多文件记录递增OFS 输出字段分隔符, 默认也是空格,可以改为制表符等ORS 输出的记录分隔符,默认为换行符,即 ...

  3. PAT Basic 1012 数字分类 (20 分)

    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和: A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n ...

  4. java多线程的四种实现方式

    主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Callable.Futur ...

  5. qt中不能编辑

    下载的qt代码不能编辑,原因是文本编码是GB2312,现在选择的是utf-8,把编码改过来就可以编辑了

  6. Mysql和ORACLE索引的实现方式

    B-Tree和B+Tree 目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构. 首先,对单个节点来说,是一个key value结构,key是作引的列,value有两种, ...

  7. CentOS下phpMyAdmin安装

    1.phpMyAdmin官网下载https://www.phpmyadmin.net/downloads/ 2.下载程序包 wget https://files.phpmyadmin.net/phpM ...

  8. CMMI分为哪几个等级?

    一共分为五个等级. 1.CMMI一级,完成级.在完成级水平上,企业对项目的目标与要做的努力很清晰.项目的目标得以实现. 2.CMMI二级,管理级.在管理级水平上,企业在项目实施上能够遵守既定的计划与流 ...

  9. 原型模式故事链(5)--JS变量作用域、作用域链、闭包

    上一章 JS执行上下文.变量提升.函数声明 传送门:https://segmentfault.com/a/11... 本次我们主要讲讲变量作用域和闭包变量作用域:顾名思义:变量起作用的范围.变量分为全 ...

  10. Windows系统下如何卸载干净mysql

    一.在控制面板中卸载mysql软件 二.卸载过后删除C:\Program Files (x86)\MySQL该目录下剩余了所有文件,把mysql文件夹也删了 三.windows+R运行“regedit ...