一、什么是函数

      当我们在日常工作中编写代码时,有没有发现这种情况,写了一套代码,却发现里面有很多段代码出现了有规律的重复,这样就不符合一个合格程序员的标准了,一个合格的程序员编写的代码最重要的应该是简洁,精炼。那么,有什么方法能减少代码中出现的这样有规律的重复的情况吗?当然有,那就是函数。例如我们平常使用最频繁的print(),input(),这些都是函数,属于python内置函数,这些函数是python中事先写好的函数,当我们需要打印一个内容时,我们就可以print()。

      我们在python中除了可以使用已经写好的内置函数,还可以根据我们的需求自定义一个函数,然后在需要的时候直接调用即可。接下来介绍一下如何自定义一个函数,或者说自定义函数有哪些关键点需要注意。

二、函数的格式

def   函数名(形式参数):

  函数体     #具体内容

函数名(实际参数)                      #调用你定义的这个函数

在这里需要注意;

1.开头这个def必须有

2.函数名字的命名规则和变量一样,必须以下划线或英文字母开头,可以包含任意字母数字和下划线的组合,不能使用标点符号和保留字,函数名区分大小写

3.函数名后边的括号和冒号必须是英文状态下的

4.在缩进块中编写具体内容,否则就不属于这个函数了

*5.函数的参数

*6.函数的返回值 return

三、函数的参数

在创建定义函数时,函数名括号里的参数称为形式参数,目的是在函数调用的时候接收实际参数。当调用函数时,函数名括号里面的参数叫实际参数,目的是传给形式参数具体内容。他们的区别是,形参是虚拟的。并不占用内存;实参是一个变量,占用内存空间,数据传送单向,由实参传给形参。

在Python中函数的参数类型分为:必选参数、默认参数、可变参数、关键字参数和命名关键字参数

1.必选参数:必须以正确的顺序传入函数,形参和实参要按照位置一一对应,调用时数量必须和声明时一样

def s(a,b):
print(a*b)
s(2,3)

2.关键字参数:这里形参与实参可以顺序不一致,因为函数调用是使用关键字参数来确定传入的参数值

def x(name,age):
print('i am %s, i am %d'%(name,age) )
x(age=6,name='tom')

3.默认参数:当函数里的某一个参数在大多数的情况下是一个固定的值时,可以使用默认参数,事先把这个参数的值写好,当调用函数时,如果没有参数传入,就使用默认参数的值,如果有参数传入,就使用传入的值

def info_(name,age,sex='male'):
print('name:%s'%name)
print('age:%s' % age)
print('sex:%s' % sex)
info_('tom',12)
info_('mary',50,'female')
结果:

name:tom
age:12
sex:male
name:mary
age:50
sex:female

4.可变参数:当我们要传入的数据有很多的时候,可以使用可变参数,传入未命名参数可以使用*args,所有数据保存在元组里;传入命名的参数可以用**kwargs,所有数据保存在字典里。

def e(*yz,**zd):
print(yz)
print(zd)
e(1,2,3,name='tom')
结果:

(1, 2, 3)
{'name': 'tom'}

四、函数参数的顺序

上面介绍的这几种参数可以组合使用,但是要注意顺序。

参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

比如定义一个函数,包含上述4种参数:

def q(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
q(1, 2)
q(1, 2, c=3)
q(1, 2, 3, 'a', 'b')
q(1, 2, 3, 'a', 'b', tom=‘abc’)
结果:

a = 1 b = 2 c = 0 args = () kw = {}
a = 1 b = 2 c = 3 args = () kw = {}
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'tom': 'abc'}

五、函数的return   

 如果我们在写好一个函数的时候要想获取函数的执行结果,就可以用return把结果返回

1.每一个函数都有返回值,返回值跟在return语句后边,值返回给调用的函数,如果return语句后边没有值,或者是函数里没有return,默认返回的是None

2.如果return后边有多个值,python会把这些值放到元组里显示

3.return语句一旦执行,就代表函数执行完毕,函数体内return后面的内容不再执行

def hello():
print('hello')
return 'over',345
a=hello()
print(a)
结果:

hello
('over', '345')

def hello():
print('hello')
return
print(‘235’)
a=hello()
print(a)
结果:
hello
None

Python中关于函数的介绍的更多相关文章

  1. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  2. python内置函数详细介绍

    知识内容: 1.python内置函数简介 2.python内置函数详细介绍 一.python内置函数简介 python中有很多内置函数,实现了一些基本功能,内置函数的官方介绍文档:    https: ...

  3. Python 中的函数

    学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数是结构化编程的核心.我们使用函数可以增加程序的可读性.自定义函数时使用关键字def 函数由多条语句组成.在定义函数 ...

  4. Python中int()函数的用法浅析

      int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int)  Help on class int in module __builti ...

  5. Python中split()函数的用法及实际使用示例

    Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...

  6. python学习Day10 函数的介绍(定义、组成、使用)

    今日学习内容: 1.什么是函数 :函数就是一个含有特定功能的变量,一个解决某问题的工具 函数的定义:通过关键字def + 功能名字():代码体(根据需求撰写代码逻辑) 2.为什么要用函数:可以复用:函 ...

  7. python中range()函数的用法

    python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...

  8. Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍

    MySQL.Mariadb中GROUP_CONCAT 函数使用介绍 By:授客 QQ:1033553122 语法: GROUP_CONCAT([DISTINCT] column_name [ORDER ...

  9. python中format函数

    python中format函数用于字符串的格式化 通过关键字 1 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 2 grade = {'nam ...

随机推荐

  1. GUI的最终选择 Tkinter(八):Message组件、Spinbox组件、PanedWindow组件、Toplevel组件

    Message组件 Message(消息)组件是Label组件的变体,用于显示多行文本消息,Message组件能够自动执行,并调整文本的尺寸使其适应给定的尺寸. from tkinter import ...

  2. Spring Security 5中的默认密码编码器

    1.概述 在Spring Security 4中,可以使用内存中身份验证以纯文本格式存储密码. 对版本5中的密码管理过程进行了重大改进,为密码编码和解码引入了更安全的默认机制.这意味着如果您的Spri ...

  3. linux中c表示字符设备文件符号

    linux中c表示字符设备文件,b表示块设备文件,l表示符号链接文件,r表示可读权限,w表示可写权限.linux文件属性解读:文件类型:-:普通文件 (f)d:目录文件b:块设备文件 (block)c ...

  4. 如何更改Android的默认虚拟机地址(Android virtual driver路径设置)

    1.将其他目录下的.android复制到C:\Documents and Settings\Administrator路径下(具体的用户名看自己的).然后进入.android\avd打开avd.ini ...

  5. 选择控件js插件和使用方法

    记录一下 选择控件js插件 /* * 滚动控件,包含地址选择.时间选择.自定义单选 */ //js_inputbox input 输入框 //js_pickviewselect 下拉单项选择 //js ...

  6. Redis key 键

    1.set key value    //设置.修改值 2.get key  //如果key不存在,返回nil,表示空. 3.type key   //返回key对应的value的数据类型 4.ren ...

  7. Git基础使用教程(仓库初始化,源码clone,源码push)

    一.下载Git源码管理客户端 Git下载地址:https://git-scm.com/ 二.检查电脑是否已安装Git 1)已安装:输入git出现下图提示则代表已安装成功. 2)未安装情况下git会出现 ...

  8. centos 离线安装 mysql 5.7

    1 . 安装新版mysql前,需将系统自带的mariadb-lib卸载. rpm -qa|grep mariadb mariadb-libs--.el7.centos.x86_64 rpm -e -- ...

  9. <转>Java 高并发综合

    并发模型 悲观锁和乐观锁的理解及如何实现,有哪些实现方式? 悲观锁 悲观锁假设最坏的情况(如果你不锁门,那么捣蛋鬼就会闯入并搞得一团糟),并且只有在确保其他线程不会干扰(通过获取正确的锁)的情况下才能 ...

  10. 转:error LNK2005: ...already defined in MSVCRTD.lib

    编译错误: Error1error LNK2005: _CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR110D.dll)\libcmtd.l ...