目录
前言
第一次写这个博客,作为自己学习Python的笔记
在忘记这些知识点的时候,可以返回来看看自己记录的笔记
在自己学不下去Python的时,看看自己的笔记。
python笔记
一、函数
1、Python函数的定义
Python函数是指组织好的、可重复使用的、用来实现单一或相关联功能的代码段,Python函数包含系统中自带的一些函数、第三方函数以及用户自定义的函数。
1.1、函数的封装
我理解的封装就是定义一个函数,将之后会经常使用的代码块打包起来,装进我定义的这个函数里面,在之后我需要再次使用的时候我就可以直接调用,不需要再写一遍相同的代码,提高函数的复用性。
1.2定义一个函数的格式
# 定义一个函数 def 函数名(): 代码块1 return 代码块2 # 调用这个函数 函数名()例子:
# 定义一个函数 def f1(): # 3个' 可以解释注释 ''' 这是一个用于测试的函数 :return: ''' print("正在测试中") return print("测试成功") # 调用这个函数 f1()
控制面板如下:
正在测试中 测试成功 进程已结束,退出代码为 0
1.3定义函数中的return
如果函数的定义需要一个结果
- 计算一个值
- 判断是否登陆成功
- 判断关系或者逻辑结果的时候
- 如果没有显示return,则默认返回None
2、Python函数的特点
- 功能一定是原子性的(不可以再次细分下去),功能不可再分
- 封装功能(在1.1中说过了)
- 提高代码的复用性
- 提升代码的可以维护性
3、Pycharm快捷键
- 看注释:Ctrl + Q
- 看参数:Ctrl + P
- 看源码:Ctrl + 鼠标左键
- 整理代码格式:Ctrl + Alt + L
- 注释代码:Ctrl + /
- 运行代码:Ctrl + Shift + F10
4、Python函数参数
4.1实际参数
例子:
def f2(i, j): print(f'i={i},j={j}') pass f2(1, 2) f2(2, 3)
形式参数和实际参数的定义
- 在例子中 i 和 j 就是形式参数,简称形参
- 下面调用中的实际的数字就是实际参数,简称实参
4.1.1位置参数
定义:实际参数的位置和数量必须和形参保持一致。
在上面的例子中如果是:
f2(3, 4, 5)
则会报错:
TypeError: f1() takes 0 positional arguments but 3 were given
4.1.2关键字实参
定义:形参和实参必须一一对应,和位置没有关系
接上面的举例子:
f2(j=3, i=4)
可以不用按照位置来
4.1.3序列实际参数和字典实际参数
- 序列实际参数的定义:序列参数有序列、字典、字符串;序列参数需要在实参前面加 * ,序列参数的本质就是位置参数
- 字典实际参数的定义:以字典作为参数,字典的key值必须和形参一一对应,且需要在实际参数前加 **
还是接上面的例子
序列实际参数:
name = ['林妙妙', '江天昊'] f2(*name) f2(*'ab')
字典实际参数:
ary = {'i':7, 'j':8} f2(**ary)
4.2形式参数
4.2.1默认参数
定义:自定义的函数中,有默认值的形参被称作默认参数
例子:
def f3(i=1, j=2): print(f'i={i}, j={j}') pass f3()
控制面板:
i=1, j=2 进程已结束,退出代码为 0
4.2.2第二种形式的默认参数:
复合参数,当只有两个形参时,可以只有一个形参有默认值
例子:
def f4(i, j=1): print(f'i={i}, j={j}') pass f4(2)
控制面板:
i=2, j=1 进程已结束,退出代码为 0
4.2.2第三种形式的默认参数:
复合参数,当有三个形参时,有默认值的那个形参只能写在最后
例子:
def f5(i, j, k=1): print(f'i={i}, j={j}, k={k}') pass f5(3, 2)
控制面板:
i=3, j=2, k=1 进程已结束,退出代码为 0
4.2.3元祖形参
自定义函数形参中带有一个 * ,一般为 *args,只要这个参数名不涉及关键字可以随便写
例子:
def f6(*args): print(f'args:{args}') pass f6() f6('hallo') f6('hallo', 1, '你好')
控制面板:
args:() args:('hallo',) args:('hallo', 1, '你好') 进程已结束,退出代码为 0
- 控制面板中的()并不是括号,而是元祖类型
- 元祖本身就可以传索引、序列之类的东西
4.2.4字典形参
自定义函数形参中带有一个 * ,一般为 **kwargs,只要这个参数名不涉及关键字便可以随便写
例子:
user = {'name': '张三', 'age': 22} def f7(**kwargs): print(kwargs) f7() f7(**user) f7(name='赵四')
控制面板:
{} {'name': '张三', 'age': 22} {'name': '赵四'} 进程已结束,退出代码为 0
- 控制面板中的 { } 并不是大括号,而是字典类型
- 字典的赋值变得随意和多样化
- 可以自己将信息写进字典里面