Python小白的进阶之路---Day4
Python小白的进阶之路---Day4
参考链接:
https://study.163.com/course/introduction.htm?courseId=378003#/courseDetail?tab=1
https://blog.csdn.net/wwy0324/article/details/81116062
https://blog.csdn.net/liang19890820/article/details/68488392
https://blog.csdn.net/weixin_41131904/article/details/87438558
https://www.geek-share.com/detail/2729166191.html
https://blog.csdn.net/hanbo6/article/details/80356767
https://blog.csdn.net/dgqJs/article/details/86582598
1.函数关键字
关键字是预先保留的标识符,每个关键字都有特殊的含义。它是python内置的,具有特殊意义的标识符;与函数不同,关键字后面不需要使用括号。编程语言众多,但每种语言都有相应的关键字,Python 也不例外,它自带了一个
keyword模块,用于检测关键字。
要获取关键字列表,可以使用内置函数 help():
>>> help('keywords') Here is a list of the Python keywords. Enter any keyword to get more help. False def if raise None del import return True elif in try and else is while as except lambda with assert finally nonlocal yield break for not class from or continue global pass
也可以使用 keyword 模块:
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.函数的定义
函数:把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
函数的使用包含两个步骤 :
- 定义函数–封装独立的功能
- 调用函数–享受封装的成果
简单来讲,一个程序可以按照不同的功能实现,分割成许许多多的代码块,每一个代码块就可以分装成一个函数。在Python中创建一个函数用
def关键字,格式为:
def 函数名():,注意函数名后一定加上()。
>>> def Myfirstfunction(): print('Enjoy创建的第一个函数') print('加油呀') >>> Myfirstfunction() Enjoy创建的第一个函数 加油呀
3.函数参数与作用域
3.1函数的参数
(1) 形式参数和实际参数
从函数调用的角度来看,分为形参和实参。形式参数指的是函数创建和定义过程中小括号里的参数,而实际参数指的是函数再被调用的过程中传递进来的参数。
>>> def firstfunction(name): print(name) >>> firstfunction('神奇的Python') 神奇的Python >>>
如上所示,“name”就是形式参数;“神奇的Python”就是实际参数。
(2) 关键字参数和默认参数
在调用函数的时候,程序员有时会因为搞乱了参数的顺序使程序混乱,因此有了关键字参数:
>>> def something(name,words): print(name+'-'+words) >>> something('江南','是JJ演唱的') 江南-是JJ演唱的 >>> something('是JJ演唱的','江南') 是JJ演唱的-江南 >>> something(words='是JJ演唱的',name='江南') 江南-是JJ演唱的
默认参数是在定义的时候赋予了默认值的参数,使用默认参数,就可以不带参数去调用函数:
>>> def some(name='江南',words='是JJ演唱的'): print(name+'---'+words) >>> some() 江南---是JJ演唱的 >>> some('不能说的秘密','周杰伦') 不能说的秘密---周杰伦
关键字参数和默认参数的区别是:关键字参数是在函数调用的时候,通过参数名指定要赋值的参数,这样做就不怕因为搞不清参数的顺序而导致函数调用出错;而默认参数是在参数定义过程中,为形式参数赋值,在函数调用的时候,不传递实际参数,则默认使用形式参数的初始值代替。
(3)收集参数
当参数个数不确定时,在表示收集参数的参数前面加上*来表示收集参数。
>>> def number(*params): print('有%d个参数'%len(params)) print('第二个参数是:',params[3]) >>> number(1,2,2.3,2.34,'happy') 有5个参数 第二个参数是: 2.34
3.2函数的作用域
变量的作用域也就是平常所说的变量可见性。一般的编程语言都有局部变量(Local Variable)和全局变量(Global Variable)之分。在python中,共有四种函数作用域,分别为函数内部(local)、函数内部与函数内嵌函数之间(enclosing)、全局(globle)和Python内置作用域(built in)。函数被调用时,解释器会先后在以上四种作用域寻找变量。即(L>>E>>G>>B)
(1)局部变量&全局变量
在函数里边定义的参数以及变量,都称为局部变量,函数中定义的变量的作用域就是整个函数,从定义开始到函数结束。事实上,Python在运行函数的时候,利用栈(Stack)进行存储,当执行完该函数后,函数中所有数据会被自动删除。所以在函数外边是无法访问到函数内部的局部变量的。如果全局变量和局部变量同名,局部变量作用域内使用的是局部变量。
>>> a=1 >>> def myfunction(): a=5 print(a) >>> a 1 >>> myfunction() 5
从程序看来,有一个变量a,我们将它传入myfunction()函数中将a修改为2并输出;结果应该是2才对,但是正确的结果却是1。这是因为,a = 1中a为全局变量,而myfunction()中的a只是局部变量,我们通过修改局部变量是影响不到全局变量的,也就是说我们不能通过函数内的操作去影响全局变量。
与局部变量相对的是全局变量,全局变量拥有更大的作用域,从定义开始到整个文件结束都可以使用。全局变量在整个代码段中都是可以访问到的,但是不要试图在函数内部去修改全局变量的值,因为那样Python会自动在函数内部新建一个名字一样的局部代替变量。
(2)global关键字
在编程过程中,在完全了解在函数中修改全局变量可能会导致各种问题,你仍然认为有必要去修改这个全局变量,那么不妨可以使用
global()关键字来到达目的。它的作用就是定义全局变量。如:若想修改上面程序的全局变量,则我们可以这样进行修改:
>>> a=1 >>> def name(): global a a=20 print(a) >>> name() 20 >>> a 20
(3)内嵌函数
Python函数的定义是可以嵌套的,也就是允许在函数内部创建另一个函数,这种函数叫做内嵌函数或内部函数。
>>> def func(): print('一二三四五') def funb(): print('12345') funb() >>> func() 一二三四五 12345
内嵌函数的作用域都在外部函数之内,需要注意的是,除了func()可以调用funb()这个内嵌函数外,没有任何可以对funb()进行调用。否则会报错。
>>> funb() Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> funb() NameError: name 'funb' is not defined
4.函数返回值
在很多编程语言中,函数和过程其实是分开的。一般认为函数是有返回值的,而过程是简单特殊并且没有返回值的。Python严格来说只有函数,没有过程!
>>> def hello(): print(1) >>> print(hello()) 1 None
调用print(hello())之后打印了两行文字,第一行是hello()函数执行的。第二行呢?当不写返回语句的时候,默认Python函数是return None的。
有些时候,需要函数为我们返回一些数据来报告执行的结果。所以,我们的函数需要返回值,非常简单,只需要在函数中使用关键字
return,后面跟着的就是指定要返回的值。如果对上述程序稍加改动:
>>> def hello(): print(1) return(2) >>> print(hello()) 1 2
另外,Python还可以用列表打包多种类型的值一次性返回,也可以直接用元组的形式返回多个值:
>>> def test(num1,num2): return num1+num2 >>> test(2,3) 5
>>> def test(): return[1,3,'JJ',5.21] >>> test() [1, 3, 'JJ', 5.21] >>> >>> def test(): return(1,3,'JJ',5.21) >>> test() (1, 3, 'JJ', 5.21)
- 小白的Python之路 day4 不同目录间进行模块调用(绝对路径和相对路径)
- 小白的Python之路 day4 生成器
- Python小白的进阶之路---Day6
- 零基础Python学习路线图,小白的进阶之路!
- python小白-day4正则表达式
- 小白的Python之路 day4 装饰器前奏
- 小白的Python之路 day4 软件目录结构规范
- Python小白的进阶之路---序列、lambda、递归
- 小白的Python之路 day4 生成器并行运算
- 小白学习机器学习---第三章:简单线性模型Python实现
- Python小白研究之交互环境使用
- 小白之python开发:彩票往期记录爬虫
- 从零开始用Python实现股票量化交易之小白笔记(3)
- LintCode python 小白4-Big Integer Addition
- 超适合小白的Python入门指导
- LintCode python 小白5-丑数
- 小白Java进阶之路
- Python学习笔记—day4—基础知识
- Python爬虫学习-Day4
- 小白之python开发:视频文件的爬取