python基础知识(三)
(三)函数
1、函数
函数的语法:
def 函数名(): 函数体
a、函数的关键字是def,函数体就是你希望这个函数帮你实现什么功能,函数名命名需要遵循的原则是以小写字母分开,由数字字母数字下划线组成,但是不能以数字开头,不同的字母之间用下划线隔开;函数内容以冒号起始,并且缩进;
例如:
def han_shu(): print("我是一个函数")
函数名后面的括号内放入的参数叫做形参/位置参数,括号内的参数可放可不放,根据实际需要决定;传入的参数还可以给定一个默认值,这样的参数就叫做默认参数,默认参数如果开始定义的时候给定了值的话,那后续调用函数的时候就可以不用传参了。注:如果存在多个参数的话,那么默认参数必须放在位置参数的后面,不然就会报错。
b、调用函数:函数名(),调用的函数括号内放入的参数叫做实参,如果有对应的参数需要传递的话,括号内就要放入对应个数的参数值,否则会报缺少参数的错误提示;
例如:
def han_shu(name): print("函数的名字是{0}".format) han_shu("xiaozhu")
han_shu("xiaoxiaozhu")
打印出来的结果是:函数的名字是xiaozhu 函数的名字是xiaoxiaozhu
c、写函数需要遵循的原则
(1)先用代码实现基本功能,可以用一组数据来验证写的代码是否正确;
(2)变成函数,加def;
(3)想办法提升代码的复用性;
d、return函数
任何情况下当你调用这个函数的时候就会给你返回一个值,返回的值不会在控制台输出,但并不是所有的函数都需要用到这个函数,返回的这个值就是return后面的表达式;return后面接的语句都不会执行,因为return在函数里面就相当于一个结束符号,就表示函数到此为止,后面的代码都不会被执行。
例如:写一个函数,检查传入的列表长度,如果大于3,那就只保留前两个长度的内容,并将新内容返回
def check_list(a): if len(a):>3 new_list=a[0:2] return new_list L=[1,2,3,4,5] new_list=check_list(L) print(new_list)
打印出来的结果是[1,2]
2、动态参数/不定长参数 *args argumnets
必须要有*,不会限制输入的参数长度和个数,在函数内部作为元祖来进行传递
例如:
def add_number(*L): sum=0 for item in L: sum+=item print("相加的和是",sum) add_number(1,2,3,4,5)
打印出来的结果是:15
3、关键字参数 key=value的方式 **kwargs key word arguments
必须要有**,在函数里面体现为字典形式,可以接收任意多个参数,但是必须以key-value的形式
例如:
def add(**kwargs): print(kwargs) add(x=1,y=2)
打印出来的结果是:{'x':1,'y':2}
4、变量作用域
全局变量:在整个模块里面都可以调用;如果相当某一个变量作为全局变量来进行使用的话需要用global来对其进行声明;
局部变量:函数的局部变量只能作用于该函数;
区别:作用范围不一样;当局部变量和全局变量同名且同时存在的时候,函数会优先调用局部变量;当局部变量没有的时候函数就会优先调用全局变量;
注:一般情况下最好是用局部变量,不要用全局变量。
5、引入模块
第一步:安装
(1)在线安装
a、打开终端,输入pip install 模块名;
b、使用国内源去进行安装,输入pip install 国内源地址 模块名;
c、打开pycharm——>file——>setting——>project interpreter——>点击+——>输入框输入你需要安装的模块,选中你需要安装的模块名之后点击下方的install package按钮就可以了
(2)离线安装
去python官网或者网上找到离线安装包下载下来,解压,拷贝解压后的文件到python安装路径下,在终端进入到安装包所在的文件路径,在终端输入python setup.py install 就可以了
注:安装之后文件的位置,Lib/lib目录下的是python自带的模块,site package目录下的是你在python安装的模块。
第二步:导入
有两种方法:
import
from...import(推荐使用):至少要具体到模块名
a、自己写的模块导入:一层一层的剥开,除了*目录,从平级目录一层一层往下进行导入
b、python自带的或者是后面安装的第三方库的引用:这个要比自己写的模块导入要简单一些
以上两种情况可以自行查资料了解或者直接在pycharm里面试一下,试一下你就知道了~
第三步:防止调用的模块名里面代码重复执行
为了防止调用的模块里面代码重复执行,为此可以在末尾加上一个主程序的执行入口 if __name__='__main__': ,这样可以保证只有当你在当前模块下面执行的时候才会执行,其他模块调用再执行的时候代码不会再一次执行,可以起到测试的作用。
以上,第三部分到此结束~