ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python基础04

2020-03-05 16:01:48  阅读:172  来源: 互联网

标签:容器 函数 04 Python 元素 基础 参数 字符串 my


本篇博客

1 函数

  1.1 局部变量和全局变量
  1.2 函数的缺省参数数(默认参数)
  1.3 函数文档及作用
  1.4 单一职责原则
  1.5 小结

2 容器

  2.1 字符串
  2.2 字符串操作
    2.2.1 字符串遍历
    2.2.2 字符串替换
    2.2.3 字符串查找
    2.2.4 字符串切片
    2.2.5 字符串去除两侧空格、是否为字母
  2.3 小结

1 函数

1.1 局部变量和全局变量

1. 全局变量: 在函数外部定义的变量. 全局指的是该变量在当前 python 文件范围内是可见的. 全局变量可以被当前 python 文件内的所有函数直接使用.


2. 局部变量: 在函数内部定义的变量. 该变量只能在定义的函数内部使用.

 

在函数内部也可以访问全局变量

g_val=100

def func1():

    print(g_val)

def func2():

    print(g_val)

func1()

func2()

 

 

 如果局部变量和全局变量命名冲突, Python 解释器会怎么做?

my_number=100

# 就近原则
# 变量先定义再使用
# 表示变量能够使用的范围
def func():

    my_number=200
    print(my_number)
    # my_number = 200  # 要放在这里会报错的 先定义再使用

func()
print(my_number)

就近原则:Python 解释器会在函数内部搜索变量 total_value, 如果找到了就直接使用, 如果找不到则到全局范围内搜索.

 

1.2 函数的缺省参数(默认参数)

默认参数:指的是当函数调用中省略了实参时默认使用的值,在形参中设置。

默认参数的语法与使用:

1. 在函数声明或定义时, 直接对参数赋值. 这就是设置形参的默认参数.
2. 在函数调用时, 省略部分或全部的参数. 这时可以用默认参数来代替

def my_function(a, b=20, c=30):
    return a+b+c

# ret = my_function(10)
# ret = my_function(10, 100)
ret = my_function(10, 100, 1000)

print(ret)

注意: 带有默认值的参数一定要位于形参参数列表的最后面.

 

1.3 函数文档及作用

函数也需要添加注释, 方便函数功能、参数以及返回值的含义能够被调用者知悉。DocString 是一个重要的工具, 由于它帮助你的程序文档更加简单易懂.

我们可以通过 ctrl + q 快捷键可以查看函数信息, 也可以通过 help() 函数来查看函数信息。

我们自己也可以给函数添加文档解释。加三引号注释。

# 单行函数文档字符串
def my_function(param):
 """函数做了什么事, 返回什么结果."""
 return param + 10

# 多行函数文档字符串 def my_add(num1, num2): """计算两个整数的和. :param int num1: 加法运算的左操作数 :param int num2: 加法运算的右操作数 :return 返回两个操作数相加的结果 """ result = num1 + num2 return result

 

 

1.4 单一职责原则

单一职责原则说的是一个函数只负责一个事情.这是因为, 如果一个函数承担的职责过多, 就等于把这些职责混合在 一起, 一个职责的变化可能会影响其它职责的能力

 

1.5 小结

1. 函数是实现代码复用的一种技术, 可以减少代码冗余.
2. 函数定义不会执行代码, 函数调用会执行代码.
3. 函数使用 def 来定义, 函数调用时候使用 "函数名(参数...)".
4. 函数调用时, 如果位置参数和关键字参数并存, 位置参数必须在关键字参数前面.
5. 函数的参数叫做形参, 调用函数时传递的数值叫做实参.
6. 函数内部定义的变量叫做局部变量, 函数外部定义的变量叫做全局变量. 6.1 局部变量只能在函数内部使用, 函
数外无法使用. 6.2 全局变量可以在当前 python 文件定义的所有函数中访问. 6.3 全局范围指的是整个 Python
文件范围.
7. 函数文档的作用解释说明函数, 并可以通过 ctrl + q 或者 help() 函数快速查阅.
8. 函数的编写要遵循的单一职责原则, 即一个函数只负责一个事情.
9. return 用于将函数的计算结果返回给函数的调用者, 使用时需要注意以下几点:

  •   9.1 只要函数执行碰到 return 就会停止执行.
  •   9.2 函数中可以编写多个 return, 但有且只有一个 return 会执行.
  •   9.3 return 后面可以跟上要返回的值, 也单独使用相当于 return None.
  •   9.4 break 用在循环中, 用来终止循环执行. return 用在函数中, 用来终止函数执行

 

2 容器

为什么要学习容器类型? 容器类型有什么用?

答: 之前学习的变量类型都只能存储单一元素, 如果我要存储全班100个学生的成绩, 需要定义100个变量. 将所有的 元素放在同一个容器中, 一个容器变量就可以存储多个元素. 减少了变量的定义

 

为什么容器类型提供了多个类型?

答: 每种容器针对了不同的使用场景, 有的容器方便操作、有的容器查询效率比较高、有的元素可以保证元素唯一、 有的元素可以保证数据只读等等. 学校就是一个容器, 学校有多种, 有学习动漫的、有学习IT编程的、有学习英语的 等等, 虽然都是学校但是所做的事情不同

 

容器分类?

1. 序列式容器中的元素在存放时都是连续存放的, 也就是序列式容器中, 除了第一个元素的前面没有元素, 最后一 个元素的后面没有元素, 其他所有的元素前后都有一个元素. 包括字符串、列表、元组.

2. 非序列式容器在存储元素时不是连续存放的, 容器中的任何一个元素前后都可能没有元素. 包括字典、集合.

 

 

 

序列式容器支持根据索引(下标)访问元素, 而非序列式容器不支持索引(下标)的方式访问元素.
序列式容器支持切片操作, 而非序列式容器不支持切片操作.

 

什么是索引?

在序列式容器中, 会给每一个元素赋予一个编号, 该编号从 0 开始计算. 第一个元素的索引就为 0, 第二个元素的索引 就为 1, 以此类推, 支持索引的容器可以使用 0 1 ... 来获得某个位置的元素

 

什么是切片?

通过索引可以获取序列式容器中的某个元素, 切片语法主要用于获得一个指定索引区间的多个元素, 例如获取从索引 值为 0 到索引值为 5 之间的所有元素

 

如何学习容器?

容器用来存储多个元素, 针对元素的操作提供了一些操作方法, 比如添加一个元素、删除一个元素、修改一个元素、 对容器中的元素排序等等

 

学习容器类型就是在学习容器的特点、以及容器对元素的操作

上面所说的 "方法", 就是我们所说所学的函数, 本质上 "方法"和"函数"指的是同一个东西, 只不过我们将某个类型专 属的一些函数叫做方法.

 

2.1 字符串

如何定义字符串?

1. 字符串使用一对单引号来定义.
2. 字符串使用一对双引号来定义.
3. 字符串使用一对三引号来定义

my_str = 'hello'
my_str = "hello"
my_str = """
我是中国人
我爱中国
我喜欢吃火锅
"""

print(my_str)

一般我们在定义字符串时候, 使用两个单引号或者两个双引号, 很少使用三引号

 

2.2 字符串操作

2.2.1 字符串遍历

遍历:  不重复的访问容器中的每个元素

我们可以使用 while 循环来访问字符串容器中的每一个字符元素

my_str = "hello"

i=0
while i <=4:
    print(my_str[i],end=' ')
    i += 1

注意: 序列式容器的索引都是以 0 开始的, 并不是从 1 开始

 

对于容器的遍历, 提供了另外一种简单方式, for 循环.

my_str = "hello"

for i in my_str:
    print(i,end=' ')

 

 

2.2.2 字符串替换  replace方法

1. 查找到错别字茹.

2. 将错别字替换成正确的如字.

3.我们可以指定第三个参数, 替换多少次.

poetry = '远看泰山黑乎乎, 上头细来下头粗. 茹把泰山倒过来, 下头茹来上头粗.'
# 将所有的 '茹' 替换为 '如'
right_poetry = poetry.replace('茹', '如')
print(poetry)
print(right_poetry)
# 只替换第一次出现的 '茹'
right_poetry = poetry.replace('茹', '如', 1)
print(right_poetry)

 

标签:容器,函数,04,Python,元素,基础,参数,字符串,my
来源: https://www.cnblogs.com/zhangyangcheng/p/12420724.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有