c++ 调用python 传入字符串_Pyth| 字符串与函数

274407d5a47d61669fa66b89be87fbe2.gif 3d50360bfb36b00ba082e2947d45d822.png

上一期的那个有趣的小代码你们完成了吗?是不是初步从中感受到了学习编程的乐趣?

不过,这次的内容较之前会有那么一点点难以理解,大家可能要感受到一些苦恼。

但还是那句话,学习编程是非常不易而且煎熬的,煎熬是暂时的,在你想放弃的时候,其实你离成功只差了一步。

这次Python入门的第三波干货,我们将紧接着上次的函数继续聊下去,在说函数之前,我们先补充一下字符串的一些知识。

39aeb08aff93a312361507e24c98b20e.png 587c6d6097de761dd0fb5bd37ee32520.png

字符串

9ad2da70adf5b9612b09c3c70147172d.png

1. 创建和访问字符串

简单来说,字符串就是引号内的一切东西,引号可以是单引号或者双引号,但必须是成对且对应的。与C语言不同的是,Python中没有字符的概念,所谓字符,就是长度为1的字符串。

和之前学的列表和元组一样,切片也可以应用在字符串上。

1b22daa4df062777db03c765fb2232c6.png 74065515629f7ff24df4964d257e0520.png 9ad2da70adf5b9612b09c3c70147172d.png

2.字符串拼接

字符串和元组一样,一旦创建下来就不能直接对它们进行修改了,但对于字符串,我们可以用字符串拼接的方法。

ee52b0d629d25a9e41f544c86377d879.png 234304ba64f9dc218d60812ca18815fd.png 9ad2da70adf5b9612b09c3c70147172d.png

3.字符串格式化

3d50360bfb36b00ba082e2947d45d822.png

format()方法

format()方法接受位置参数和关键字参数(下面的函数中会详细讲解)。

举个例子:

cb9337152fde357c0267e45b878b3dc2.png a47902aba4f8fbcd93a0ac99e387cd23.png

格式化操作符:%

760ce29cc50186906f1a365c07243599.png

举个例子:

4d6409edfb8df4bdd0ac76903e86aa43.png eb1267dda28314b0bddef417ea7f3e88.png 3d50360bfb36b00ba082e2947d45d822.png

字符串的操作方法在以后的学习中可是非常有用的,随着深入的学习,我们还会学习功能更强大同时也比较难的方法。不过,学的越深乐趣越大哦!

接下来,我们就继续聊上一期没有说完的函数吧!

39aeb08aff93a312361507e24c98b20e.png 587c6d6097de761dd0fb5bd37ee32520.png

函数的参数

9ad2da70adf5b9612b09c3c70147172d.png

1.位置参数:

位置参数须以正确的位置传入函数。调用时的数量必须和声明时的一样。

8041e1cd62b4e681ad8e7c52ff59a076.png 5f6d3c269f5a11e0f643b12d92adf28e.png 9ad2da70adf5b9612b09c3c70147172d.png

2. 关键字参数:

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

1e805e82ff88222e7c8d260e58e0a1f6.png ca4eb6906f9c3533fb9e838b0ffa70e8.png 9ad2da70adf5b9612b09c3c70147172d.png

3.默认参数:

默认参数其实就是在定义函数的时候,给参数赋予一个默认的值,调用函数时,默认参数的值如果没有传入,则就会输出默认值。

下例会打印默认的sex,如果sex没有被传入:

cdd944acf2e9853b40032c7a17c50912.png f08fd952a78219bc44d0208be4e719db.png 9ad2da70adf5b9612b09c3c70147172d.png

4.不定长参数:

当你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述参数不同,声明时不会命名,仅需要在参数前边加上星号(*)即可。

举个例子:

d94d81d24ab50927174f9287a748c491.png 261093b0ec9e149fefa77dbe073a5ab0.png

其实Python就是把不定长参数的参数们打包成了一个元组,使用的时候,只需要使用操作元组的方法就行了。*就是起了打包的作用,其实它也有解包的作用哦!举个例子,如果你想把一个列表a传入fun()函数的不定长参数*tuples中,直接调用fun(a)时会出错,这个时候,只需在列表a前面加上*,把列表里的值“解”出来即可。

79d0488261eaae02f8fb030a58acd254.png 27721e3415d16f1c2f75dfac6795a91d.png

当不定长参数前面加两个星号(**)时,这两个星号(**)的作用就是讲参数们打包成字典的形式。同样的,使用的时候,只需要使用操作字典的方法就行了。

e96c7f7cbf76cda1c56c71d1c9d4a443.png 5790dbe58d320c6388c4afc88a8d8276.png 587c6d6097de761dd0fb5bd37ee32520.png

 函数的返回值

3d50360bfb36b00ba082e2947d45d822.png

要想获取函数的执行结果,就可以用return语句把结果返回。

注意:

1.  函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束。

2.  如果未在函数中指定return,那这个函数的返回值为None  。

3.  return可以返回列表、字典等对象,当返回多个对象时,解释器会把这多个对象组装成一个元组作为一个一个整体结果输出。

下面是例子:

1a1bcf62fb69508735cbbd6b92988de6.png 904d843de65b60c358f29bdd41dccc86.png 39aeb08aff93a312361507e24c98b20e.png 587c6d6097de761dd0fb5bd37ee32520.png

内嵌函数和函数的作用域

嘿!敲黑板!难点来咯

9ad2da70adf5b9612b09c3c70147172d.png

1.内嵌函数:

Python允许在函数内部创建另一个函数,这种函数叫做内嵌函数。

举个例子:

ad62b270ad44b250c7e405dc0c45bbea.png aef626ac8c9f0d66780a2a2cc33a4dd1.png

需要注意的是,内嵌函数是不能直接调用的。如果用fun2()调用,则会报错。

d4dc49d6429b8c805abdf9021c7f0cb5.png 9ad2da70adf5b9612b09c3c70147172d.png

2. 函数的作用域:

3d50360bfb36b00ba082e2947d45d822.png

python中的作用域分4种情况:

        L:local,局部作用域,即函数中定义的变量;

        E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

        G:global,全局变量,就是函数外定义的变量;

       B:built-in,系统固定模块里面的变量,比如int等。

39aeb08aff93a312361507e24c98b20e.png

搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。

要注意的是,local和enclosing是相对的,enclosing变量相对上层来说也是local。

函数的作用域在理解起来会比较困难,其实简单来说,就是作用域越小越难以被调用,调用变量时能调用哪些变量取决于它的位置在什么作用域内,大家需要多多思考。举个例子:

55b864f3f841aa109aeab37aa5bd68a0.png 9ad2da70adf5b9612b09c3c70147172d.png

3.global关键字和nonlocal关键字

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了,当修改的变量是在全局作用域(global作用域)上的,就要使用global先声明一下,例如:

1538ab1923516231803cc6a0c89bdeb0.png

global关键字声明的变量必须在全局作用域上,不能嵌套作用域上,当要修改嵌套作用域(enclosing作用域,非全局作用域)中的变量怎么办呢,这时就需要nonlocal关键字了。

e8870b56f1c970d90937a85f709f7290.png 587c6d6097de761dd0fb5bd37ee32520.png

递归函数

3d50360bfb36b00ba082e2947d45d822.png

定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归是一个特别好用的方法,它可以使你的代码更加简洁、精炼。但是,想要掌握它也是不太容易的,需要注意的一点就是,在使用递归函数的时候,既要学会调用自己,也要学会从中“蹦出来”。

举个求阶乘的例子:

b3c9d7f7363783ee9f1fa766c69fd0ef.png

用递归方法写出的代码是不是要比常规方法简短精炼许多呢?是不是Python写出的代码比C语言的代码也简短易懂许多呢?

39aeb08aff93a312361507e24c98b20e.png 587c6d6097de761dd0fb5bd37ee32520.png

内置函数

Python拥有非常多的内置函数,我们在这里就简单介绍两种比较实用的BIF。

9ad2da70adf5b9612b09c3c70147172d.png

1. filter()

filter其实是一个过滤器,它可以帮助你筛选数据,它有两个参数。第一个参数可以是一个函数或者是None,如果是函数的话,则将第二个可迭代对象的每一个元素作为函数的参数进行计算,把返回值为True的值筛选出来;如果第一个参数是None,则直接将第二个参数中为True的值筛选出来。

举个例子:

1fde978853350d012f9d59045bb76cc1.png 9ad2da70adf5b9612b09c3c70147172d.png

2.map()

map在这里可不是地图的意思,它也有两个参数,分别是一个函数和一个可迭代对象,它的作用就是将可迭代对象中的每个元素作为函数的参数进行运算。举个例子:

335de18cdb051e150cf9c6a53346b1f0.png

注意,filter()和map()返回的是一个迭代器,需要用list()输出。

3d50360bfb36b00ba082e2947d45d822.png

最后,给大家留个小练习,分别用普通方法和递归函数的方法求斐波那契数列的前20项和。(没有思路就去百度呦!!!)

817e10857b1ce2b17281c670bb7c3553.png

执行编辑 | 段航博

责任编辑 | 于文博

7ec16700c0c1eddae30c7bdabfc0f157.png
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页