函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

特性:代码重用,保持一致性,可扩展性。

函数的命名规范和变量命名一样。

Python 定义函数使用 def 关键字,一般格式如下:

def 函数名(参数列表):
函数体

调用函数时格式如下:

函数名(参数列表)

简单函数

def func():#定义func函数
print("this is my function.") #func函数功能 func() #调用func函数 #执行结果:this is my function.

带参数的函数

形参(创建函数时的参数):形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应)

实参(调用函数时的参数):实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参

形参和实参的区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参

必需参数

必需参数须以正确的顺序传入函数。调用时的数量以及顺序必须和声明时的一样。

def func(name,age,sex): #定义func函数并添加3个参数
print("name:%s\nage:%d\nsex:%s"%(name,age,sex)) #func函数功能 func("liu",18,"男") #因为声明函数时有参数 所以调用时得加参数 且顺序和数量必须和声明时对应 #执行结果:
# name:liu
# age:18
# sex:男

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def func(name,age,sex): #定义func函数并添加3个参数
print("name:%s\nage:%d\nsex:%s"%(name,age,sex)) #func函数功能 func(age=18,sex="男",name="liu") #关键参数的数量必须和声明时数量一样 参数的使用不需要使用声明函数时指定顺序 #执行结果:
# name:liu
# age:18
# sex:男

默认参数

调用函数时,如果没有传递参数,则会使用默认参数。

def func(name,age,sex="男"): #定义func函数并将sex设为默认参数
print("name:%s\nage:%d\nsex:%s"%(name,age,sex)) #func函数功能 func(age=18,name="liu") #参数的数量必须和声明时数量一样 如果没有传递sex则会默认声明时sex="男" #执行结果:
# name:liu
# age:18
# sex:男 func(age=18,name="liu",sex="女") #如果有传递sex 则声明时默认的sex将会改变 #执行结果:
# name:liu
# age:18
# sex:女

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述几种参数不同,声明时不会命名。

def func(*args): #加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组
print(args) # 执行结果:('liu', 18, '男') 所有传递上来的参数存在一个元组里
for i in args:
print(i) func("liu",18,"男") #所有参数都将存储到args元组里 #执行结果:
# ('liu', 18, '男')
# liu
#
# 男
def func(**kwargs): #加了两个星号(**)的变量名会存放所有已经命名的变量参数。如果在函数调用时没有指定参数,它就是一个空字典
print(kwargs)# 执行结果:{'age': 8, 'sex': '男', 'name': 'liu'} 所有传递上来的参数存在一个字典里
for i in kwargs:
print(i+":"+str(kwargs[i])) func(name="liu",age=8,sex="男") #所有参数都将存储到kwargs字典里,等号(=)前的值会变成关键字(key) 等号(=)后的数值会变成值(value) #执行结果:
# {'age': 8, 'sex': '男', 'name': 'liu'}
# age:8
# sex:男
# name:liu

Python3 函数的更多相关文章

  1. python3函数

    一.python3函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.可以自己创建函数,这被叫做用户自定义函数. 1.定义函数规则 函 ...

  2. python015 Python3 函数

    Python3 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

  3. Python3函数中特殊形参的使用:*、*args、**kwargs

    Python3函数中特殊形参的使用:*.*args.**kwargs ==用法1:不定长参数== 当函数需要的参数数量不确定的时候,可以使用*args 和 **kwargs , 所有的位置参数保存在* ...

  4. 07 . Python3函数

    Python3函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print().我们可以直接调用 ...

  5. 汉诺塔python3函数编写和过程分析

    !/usr/bin/env python3 -- coding: utf-8 -- 利用递归函数计算阶乘 N! = 1 * 2 * 3 * ... * N def fact(n): if n == 1 ...

  6. Python3 函数注解

    Python3提供一种语法,用于为函数声明中的参数和返回值附加元数据.下面的例子是注解后的版本,特点在第一行: 1 def clip(text : str, max_len : 'int > 0 ...

  7. 5 Python3 函数进阶&迭代器与生成器

    1.函数进阶 1.1.名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的 ...

  8. Python3 函数作用域

    一 LEGB 什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 顺序是什么? 跟名字一样 ...

  9. python系列十:python3函数

    #!/usr/bin/python #-*-coding:gbk-*- '''函数的简单规则:    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().    任何传入参数和自变量必 ...

  10. Python3 函数 一

    什么是函数? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal ...

随机推荐

  1. iOS AFNetworking内存泄漏处理方法

    iOS AFN内存泄漏处理方法 细心的你是否也发现AFN的内存泄漏的问题了呢. 在这里给大家提供一个解决AFN内存泄漏的方法. 单例解决AFN内存泄漏 + (AFHTTPSessionManager ...

  2. Javascript如何实现AOP

    简介: AOP(面向切面的编程)是为了解决功能的独立性与可维护性而提供的一种编程思想.当多个函数大量重复使用同一个功能时通过分层切分,将功能平衡的划分,从而提高低耦合性. JS中实现: index.h ...

  3. C# Enum,Int,String的互相转换

    版权声明:本文为博主原创文章,未经博主允许不得转载. Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用Int32.编程语言通常提供语法来声明由一组已 ...

  4. Java源码分析之LinkedList

    LinkedList与ArrayList正好相对,同样是List的实现类,都有增删改查等方法,但是实现方法跟后者有很大的区别. 先归纳一下LinkedList包含的API 1.构造函数: ①Linke ...

  5. Linux MySQL源码安装缺少ncurses-devel包

    在Red Hat Enterprise Linux Server release 5.7 上用源码安装MySQL-5.6.23时,遇到了" remove CMakeCache.txt and ...

  6. Oracle数据库shutdown immediate被hang住的几个原因

    实验操作环境:         操作系统:Red Hat Enterprise Linux ES release 4 (Nahant Update 6)                         ...

  7. ORA-01102: cannot mount database in EXCLUSIVE mode

    安装完ORACEL 10g数据库后,启动数据库时遇到ORA-01102: cannot mount database in EXCLUSIVE mode [oracle@DB-Server ~]$ s ...

  8. 从零自学Hadoop(09):使用Maven构建Hadoop工程

    阅读目录 序 Maven 安装 构建 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Source ...

  9. AES —— JAVA中对称加密和解密

    package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; impo ...

  10. 识别 Linux上的设备(磁盘)类型

    1. Linux 上的设备 (device) Linux 操作系统中,各种设备驱动(device driver)通过设备控制器(device controller)来管理各种设备(device),其关 ...