程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Python入门基础学习(函数)

发布于2019-11-07 09:17     阅读(1108)     评论(0)     点赞(16)     收藏(1)


Python基础学习笔记(三)

 

函数的概念:

所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用

函数的使用包含两个步骤:

1.定义函数 --封装独立的功能

2.调用函数 --享受封装的成果

主要分为:内置函数标准库函数第三方库用户自定义函数

 

函数的定义与调用:

def name(形参):

  #函数内容

  #return 返回的内容

name(实参

 

传参数的方法:

1基本参数

1
2
def saySome(name,word):
    print("{0} wanted to say {1}".format(name,word))

2.默认参数

1
2
def saySome(name = "HHS",word = "his family to be healthy"):
    print("{0} wanted to say that{1}".format(name,word))

3.* 参数(用于接收n个参数)

1
2
3
def saySome(*args):  #args为一个元组
    print(args)
saySome('hzq',2,3)输出:('hzq', 2, 3)

 4.** 参数(用于接收n个默认参数)

1
2
3
def saySome(**kwargs):  #kwargs为一个字典
    print(kwargs)
saySome(name = "hhs",age = 21)  #传值name不用加"",默认转成字符串类型输出:{'name': 'hhs', 'age': 21}

 

return(返回值):

  • 默认情况:返回None
  • 一般情况:返回什么就是什么
  • 特殊情况:return 1,2,3  #用逗号隔开返回的是一个元组

 

对Pycharm的拓展:

断点:

如图:让程序执行至第六行停止

F8(Step over)从断点处执行,如果是方法,跳过执行至第七行,输出3个hello

F7(Step into)从断点处执行,如果是方法,跳至方法里面执行也就是执行第3行输出hello1

 

函数文档注释:

在开发中希望给函数添加注释,只需要在函数定义下方添加三个"""xxxx"""(三对引号)

可通过函数名.__doc__输出注释文档;也可选中函数通过crtl + Q查看内容

 

匿名函数lambda:

格式为:lambda 参数 : return的操作

1
2
3
Add = lambda x,y : x+y
Add(1,2)  
输出:3

 

全局语句global:

global可以为变量赋值为全局变量(一般避免使用)

1
2
3
4
5
6
7
PI = 3.1415926
AI = 2.1415926
def updatePi():
    global PI  #指定PI不是局部变量而是全局变量,与函数外的PI指向相同的对象
    AI = 2.14  #在函数里出现,为局部变量,与函数外的AI指向不同的对象
    PI = 3.14
updatePi()print(AI,PI)输出:AI = 2.1415926,PI = 3.14

 

非局部函数nonlocal:

在嵌套函数中,如果要为定义在上级的函数体的局部变量赋值,可以使用nonlocal

 

递归函数:

即为自调用函数,在函数体内部直接或间接地直接调用自己

常规案例1:使用递归实现阶乘

1
2
3
4
5
6
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)
print(factorial(9))

常规案例2:斐波那契数列

1
2
3
4
5
6
7
def fib(n):
    if n < 1:
        return -1
    elif n ==1 or n==2:
        return 1
    else:
        return fib(n-1) + fib(n-2)

 

函数的闭包(嵌套调用):

在一个外函数中定义了一个内函数,内函数里引用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包

例子:

1
2
3
4
5
6
7
def FunX(x):  
    def FunY(y):
        return x*y  #引用外函数的临时变量x
    return FunY    #返回一个内函数
i = FunX(8)      #返回一个FunY的函数,且FunY继承了x=8
print(i)        #输出为:<function FunX.<locals>.FunY at 0x0037A8A0>
print(i(2))      #输出为16

 

内置函数总结:

输入输出:

  • print()
  • input()

强制转换:

  • dict()
  • set()
  • list()
  • tuple()
  • int()
  • float()
  • str()
  • bool()

数学相关:

  • abs()  #求绝对值
  • max()  #求最大值
  • min()  #求最小值
  • sum()  #求和
  • divmod()  #两数相除求它商和余数的

进制转化相关:

  • bin()  #将10进制转为2进制
  • oct()  #将10进制转为8进制
  • int()  #将其他进制转为10进制
  • hex()  #将10进制转为16进制

其他:

  • len()
  • open()
  • range()
  • id()
  • type()

 

高级内置函数:

1.map(函数,可迭代数据类型)  #批量处理常用

1
2
3
4
v = [10,20,30,40]
v1 = map(lambda x : x+50,v)
print(list(v1))
输出:[60,70,80,90]

map不影响v1,返回一个map对象

 

2.filter(函数,可迭代数据类型)  #过滤器

1
2
3
4
v = [10,20,'hhs',30,1.55]
v1 = filter(lambda x : type(x)==int ,v)
print(list(v1))
输出:[10, 20, 30]

  

3.reduce(函数,可迭代数据类型)  #累积

1
2
3
4
5
from functools import reduce
v = [10,20,30,40]
v1 = reduce(lambda x,y : x+y ,v)
print(v1)
输出:100

 

小练习:华为测试校招一面代码题:求两个数的最大公约数

1
2
3
4
5
6
7
8
#方法一:辗转相除法求最大公约数def fun1(a,b):
    if b > a:
        a, b = b, a
    while a % b !=0:  #除至余数为0时跳出循环,取小的数b为最大公因数
        c = a % b
        a = b
        b = c
    return b
1
2
3
4
5
6
7
8
#方法二:辗转相减法求最大公约数
def fun2(a,b):
    while a - b !=0:
        if a > b:
            a = a - b
        else:
            b = b - a
    return b

  

 

 



所属网站分类: 技术文章 > 博客

作者:听爸爸的话

链接:https://www.pythonheidong.com/blog/article/148135/601e9d3984b8fec987e0/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)