1.什么是函数:

可重复使用的,用来实现单一,或相关联功能的代码段。

函数分为内置函数和自定义函数,这里先讲自定义函数

2.如何定义函数:

#语法
def 函数名(参数1,参数2,参数3,...):
'''注释'''
函数体
return 返回的值

注:函数必须先定义才能使用,定义阶段不执行代码只检测语法.意思就是语法错误在定义阶段就会检测出来,代码的逻辑错误只有在执行时才会提示.

3.定义函数的三种形式

无参:用于执行一些打印等操作,不需要参数传进去

有参:需要根据传进去的参数进行运算

空函数:用于设计代码结构

#     1.无参函数
# def foo():
# print('from foo')
# foo()
# # 2.有参函数
# def bar():
# print(x,y)
# bar(1,2)
# # 3,空函数
# def func():
# pass

4.函数调用

函数调用就是函数名加个()即可

4.1调用函数的三种形式:

# 1.语句形式
# def foo():
# print('from foo')
# foo()
#
# 2.表达式形式
# def foo(x,y):
# res = x+y
# return res
# res = foo(1,2) # 3.可以当做参数传给另外一个函数
# def max2(x,y):
# if x>y:
# return x
# else:
# return y
# res = max2(max2(1,2),3)
# print(res)

4.2函数的返回值

1.返回值没有类型限制

2.返回值没有个数限制

注:返回多个值的结果就是返回一个元组,0个值返回为None

return是函数结束的标准,可以有多个return但只执行一次

# def f1():
# print('111')
# return 1
# print('222')
# return 2
# print('333')
# return 3
#def f1()
#只执行 print('111')

4.3函数的参数

函数的参数分为形参和实参.形参即为变量名,实参为变量值,在函数调用时,把值绑定到变量名上,在函数调用结束后,解除绑定

形参与实参的具体分类(重点)

1.位置参数

1.1位置形参

  在定义函数阶段按照从左到右的顺序定义的形参.   注:按位置定义的形参必须被传值,多一个不行,少一个也不行

# def foo(x,y)
# print(x,y)
#
# foo(1,2) #正确
# foo(1,2,3) #错误

1.2位置实参

  在调用函数阶段按照从左到右的顺序依次传入的值.

2.关键字参数

  关键字实参:在调用函数阶段,按照key=value的形式指名道姓的为指定值传值

  注:可以完全打乱顺序,仍可以为指定的形参传值

    可以混合使用位置实参和关键字实参,但必须注意(1)位置实参必须放在关键字实参前面(2)不能对一个形参重复赋值

def foo(name,age):
print(name,age) foo('zfj',18)
foo(age=18,name='egon')
# foo(name='zfj',18)#报错
# foo('zfj', age=18)

3.默认参数

  指的是在定义阶段就已经为某个形参赋值了,该形参称之为有默认值的形参

注意:1.在定义阶段就已经被赋值,意味着在调用阶段就可以直接使用,默认参数

   2.位置形参应该放到默认形参前面

   3.默认参数的值,通常应该为不可变类型

def foo(x,y=2):
print(x,y)
foo(1)#1,2
foo(1,3)#1,3

4.可变长度参数

  站在实参的角度,参数长度可变指的是在调用函数时,传入的实参的值个数不固定

  4.1在形参中带“*”:会将调用函数时溢出的位置实参保存为元组的形式,然后赋值给*后的变量

def foo(x,y,*z):
print(x,y,z)
foo(1,2,3,4,5)#1 2 (3, 4, 5)

  4.2在形参中带“**”:会将调用函数时溢出的关键字实参保存成字典的形式,然后赋值给**后的变量名

def foo(x,y,**z):
print(x,y,z)
foo(1,2,a=1,b=2)#1 2 {'a': 1, 'b': 2}

  4.3在实参中带“*”:在传值前先被打散成位置实参,然后再进行赋值

def foo(x,y,*z):
print(x,y,z)
foo(1,*[2,3,4,5,6])#1 2 (3, 4, 5, 6)

  4.4在实参中带“**”:在传值前先被打散成关键字实参,然后再进行赋值

def foo(x,y,z):
print(x,y,z)
foo(1,**{'y':2,'z':1})#1 2 1

5.命名关键字参数

放到*与**之间的参数称为命名关键字参数。函数的调用者可以传入任意不受限制的关键字参数

注意:命名关键字参数必须按照key = value的形式传值

补充:

在形参中带*与**的,*后的变量名应该为args,**后应该是kwargs

# 当我们想要将传给一个函数的参数格式原封不动地转嫁给其内部的一个函数,应该使用下面这种格式
def bar(x,y,z):
print(x,y,z)
def wrapper(*args,**kwargs):
bar(*args,**kwargs)
wrapper(1,2,z=3) #虽然调用的是wrapper,但是要遵循的却是bar的参数标准

python-函数入门(一)的更多相关文章

  1. Python函数(入门6)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407970.html 本文出自:[Edwin博客园] Python函数 1. Python之调用函数 pri ...

  2. python函数入门

    知识内容: 1.函数的作用 2.函数的定义与调用 3.函数的返回值 4.函数的参数 5.局部变量与全局变量 6.作用域 一.函数的作用 1.复用代码 将可能重复执行的代码封装成函数,并在需要执行的地方 ...

  3. python函数入门到高级

    函数的定义: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字 test:函数名 ():内可定义 ...

  4. Python——函数入门(三)

    一.变量作用域 当程序定义一个变量时,这个变量是有它的作用范围的,变量的作用范围称为变量的作用域.根据变量的位置,分为两种: 局部变量:局部变量就是在函数中定义的变量,包括参数,都是局部变量,局部离开 ...

  5. Python——函数入门(二)

    一.函数的参数 我们在定义函数时,可以定义形式参数(简称形参),这些形参的值在函数调用的时候才会确定,形参的值由调用者负责传入. 1.关键字参数 在Python中,函数的参数名并不是没有意义的,在调用 ...

  6. Python——函数入门(一)

    一.理解函数 举一个例子,当我们需要重复使用一个功能的时候,不可能每次都去复制一次代码,这个时候就需要用到函数了,所谓的函数,简单来说就是给函数取一个名字,当需要用到这个功能的时候,就可以通过这个名字 ...

  7. 实验与作业(Python)-02 Python函数入门与温度转换程序

    截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...

  8. 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)

    截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...

  9. python之函数入门

    python之函数入门 一. 什么是函数 二. 函数定义, 函数名, 函数体以及函数的调用 三. 函数的返回值 四. 函数的参数 五.函数名->第一类对象 六.闭包 一,什么是函数 函数: 对代 ...

  10. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

随机推荐

  1. js 日期 相关

    Js计算指定日期加上多少天.加多少月.加多少年的日期 function DateAdd(interval, number, date) { switch (interval) { case " ...

  2. 32. Springboot 系列(八)动态Banner与图片转字符图案的手动实现

    使用过 Springboot 的对上面这个图案肯定不会陌生,Springboot 启动的同时会打印上面的图案,并带有版本号.查看官方文档可以找到关于 banner 的描述 The banner tha ...

  3. 【51nod 1785】数据流中的算法

    Description 51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠标轨迹等特征计算用户对于网站的满意程度.   现有的统计工具只能统计某一个窗口中,用户的满意程 ...

  4. 【51nod 1288】汽油补给

    Description 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市 ...

  5. KMP模板(HDU1711)

    #include<stdio.h> #include<math.h> #include<string.h> #include<stack> #inclu ...

  6. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径

    java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...

  7. jsonp实现下拉搜索

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. A - Brackets POJ - 2955 (区间DP模板题)

    题目链接:https://cn.vjudge.net/contest/276243#problem/A 题目大意:给你一个字符串,让你求出字符串的最长匹配子串. 具体思路:三个for循环暴力,对于一个 ...

  9. zabbix系列 ~ linux监控相关

    Linux 监控 一 相关名词解释    cpu context switch (上下文切换)   1 定义 CPU给每个任务一定的服务时间,当时间片轮转的时候,需要把当前状态保存下来,同时加载下一个 ...

  10. mysql 查询优化 ~ explain与索引失效

    一 explain  1 扫描行数根据的是表的统计元数据  2 索引的元数据具体指的就是show index from查到的索引的区分度,索引的区分度越高越好   3 表的元数据是定期收集,所以可能不 ...