Python学习笔记(六)——函数基础

函数

函数:是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
1、定义、调用函数
使用 def 关键字定义函数:

def 函数名(参数列表):
    函数体
eg:
def AI(): #定义函数
    print("AIAIAIAIIAIAIA!")
AI()      #调用函数

2、传递参数
函数的参数可以是任何数据类型(字符串、数字、列表、字典等),并且在函数内其将被视为相同数据类型。通常向函数传递列表很有用,因为列表包含的可能是字符串、数字或更复杂的对象(如字典)。将列表传递给函数后,函数就能直接访问其内容。而函数也可返回任何类型的值,包括列表和字典等较复杂的数据结构。

2.1 必选参数(位置参数):基于实参的顺序传入参数的关联方式。(实参wid、hig与函数area()中的形参width、height一一对应)

def area(width, height):  #定义计算面积的函数area
    return width * height #运用形参(形式参数)计算并返回面积值

def show(name):           #显示函数
    print("my", name)

show("area")              #调用函数show()并传入实参(实际参数)"area"
wid, hei = 2, 5
print("width =", wid, " height =", hei, " area =", area(wid, hei))

输出:
my area
width = 2  height = 5  area = 10

2.2 关键字参数:在实参中将名称和值关联起来,传递给函数的名称—值对(将上面的area()函数调用修改一下)

print("width =", wid, " height =", hei, " area =", area(height = hei, width = wid))

2.3 默认值参数:函数中可给每个形参指定默认值。在调用函数中给形参提供了实参时,将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。

wid, hei = 2, 5    #因为要使用hei的值,所以需要调整定义的顺序位置
def show(name):
    print("my", name)
def area(width, height = hei): #给形参指定默认值 
    return width * height
#不能定义为:area(width = wid, height) ,因为非默认参数(height)不能跟在默认参数(width)之后
show("area")
print("width =", wid, " height =", hei, " area =", area(wid))

注意:在形参中非默认参数不能跟在默认参数之后!剩下的实参可用必选或关键字参数传递

2.4 可变参数:传入的参数个数是可变的。

def sum(*num):
    a = 0
    for n in num:
        a += n
    return a
print(sum(1,2,3,4))
输出:10

一个星号是创建一个空元组,并将收到的所有值都封装到这个元组中,即便函数只收到一个值也如此。两个星号是创建一个空字典,并将收到的所有值都封装到这个字典中,即便函数只收到一个值也如此。

def funs(a,b,c=3,*e,**f):
    print("a: ", a, "b: ", b, "c: ", c, "e: ", e, "f: ",f)
funs(0,1,2,'a','b',l = 99,y = 98)  #可用任意数量的关键字实参
输出:
a:  0 b:  1 c:  2 e:  ('a', 'b') f:  {'l': 99, 'y': 98}

也可给形参指定一个默认值——空字符串,并将其移到形参列表的末尾,这让其变成可选的(在不为空时才使用)。
注意:参数定义的顺序必须是:必选参数、默认参数、可变参数、关键字参数。

3、lambda 函数
lambda 函数是一种小的匿名函数,可接受任意数量的参数,但只能有一个表达式。

#lambda 参数 : 表达式
eg1:
x = lambda a, b : a * b
print(x(5, 6))
输出:10
eg2:
def func(n):
  return lambda a : a * n
doubler = func(2)
tripler = func(3)
print(doubler(11)) 
print(tripler(11))
输出:22  33

详情:https://blog.csdn.net/zjuxsl/article/details/79437563

4、导入
模块:一个包含所有定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。
包:一个包含__init__.py 文件的文件夹,目录下一定得有__init__.py文件和其它模块或子包。(通俗说法)
库:指能完成一定功能的集合,供用户使用。

import sys  #运用import导入模块、包、库。
#import sys 引入 python 标准库中的 sys.py 模块
print('命令行参数如下:')
for i in sys.argv: #sys.argv 是一个包含命令行参数的列表
    print(i)

print('\nPython 路径为:', sys.path, '\n')
#sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表

输出:
D:/ProgramFiles/PyCharm/Learning/Basics/函数-模块.py

Python 路径为: ['D:\\ProgramFiles\\PyCharm\\Learning\\Basics', 'D:\\ProgramFiles\\PyCharm\\Learning', 'D:\\Program Software\\Visual Studio\\Python37_64\\python37.zip', 'D:\\Program Software\\Visual Studio\\Python37_64\\DLLs', 'D:\\Program Software\\Visual Studio\\Python37_64\\lib', 'D:\\Program Software\\Visual Studio\\Python37_64', 'D:\\Program Software\\Visual Studio\\Python37_64\\lib\\site-packages'] 

只需编写一条import语句并在其中指定模块名,就可在程序中使用该模块中的所有函数。
from … import 语句:从一个模块中导入一个指定的函数
from … import * 语句:从一个模块中的所有函数,但不推荐使用:如果只要看一下文件开头的import语句,就能清楚地知道程序使用了哪些类,将大有裨益;但这种导入方式没有明确地指出使用了模块中的哪些类。这种导入方式还可能引发名称方面的困惑。如果不小心导入了一个与程序文件中其他东西同名的类,将引发难以诊断的错误。
as:给导入的模块、函数指定别名

import pandas as pd
from sklearn.svm import SVC as sc
from car import Car, ElectricCar  # 导入多个

__name__属性:一个模块被另一个程序第一次引入时,其主程序将运行。如果想在模块被引入时,模块中的某一程序块不执行,可以用__name__属性来使该程序块仅在该模块自身运行时执行。每个模块都有一个__name__属性,当其值是__main__时,表明该模块自身在运行,否则是被引入。
内置的函数 dir() 可以找到模块内定义的所有名称。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值