Python学习笔记之函数(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012561176/article/details/81946310

1、传递列表或者字典:在函数中,传递列表和字典后,函数可以访问传递过来的列表和字典,然后进行相关操作。

(1)、简单的传递列表和传递字典,示例代码如下:

#函数传递列表和字典

def musics(music_lists):
    for music in music_lists:
        print("The music name is " + music);

musics(['My Love','Forever Love','Forget Love']);

print("\n......................\n");

def musics(music_lists):
    for music in music_lists.values():
        print("The music name is " + music);

musics({'music_one':'My Love','music_two':'Forever love','music_three':'Forget Love'});

上面一部分代码是传递列表的,下面一部分代码是传递字典的,然后各自使用相关的for循环打印输出,运行后如下图所示:

(2)、在函数中修改列表,示例代码如下:

#函数修改列表

def musics(music_lists,music_lists2):
    music_lists[-1] = "you love is foever,don't forget";
    for music in music_lists:
        print("The music name is " + music);
    while music_lists:
        other_musics = music_lists.pop();
        music_lists2.append(other_musics);
    print("\n..............................\n");
    for music in music_lists2:
        print("The other music name is " + music);

musics(['My Love','Forever Love','Forget Love'],[]);

其中我们传递两个列表实参到形参中,然后修改第一个列表music_lists的最后一个元素,循环music_lists读出来之后,再while循环第一个列表music_lists的值,然后依次pop()方法删除掉并压入存储到变量other_musics中,然后再把内容追加传递过来的空实参列表music_lists2中,再循环读出,运行后如下图所示:

下面改下上面的代码,如下:

#函数修改列表

def musics(music_lists,music_lists2):
    music_lists[-1] = "you love is foever,don't forget";
    for music in music_lists:
        print("The music name is " + music);
    print("\n..............................\n");
    while music_lists:
        music_lists2 = music_lists.pop();
        print(music_lists2);
        other_musics = [];
        other_musics.append(music_lists2);
    print("\n..............................\n");
    for music in other_musics:
        print("The other music name is " + music);

musics(['My Love','Forever Love','Forget Love'],[]);

其中,如果我们在第一个列表music_lists.pop();的时候没有存储到变量里面,而是存储到一个空列表里面,然后去追加这个列表的话,只会追加最后pop出来的那个元素,因为while循环中追加完了之后跳出循环了,而other_musics是在循环体内定义的,所以最后跳出循环的时候那个列表只有最后pop的那个元素,所以代码需要注意,有时有缩进没缩进出来的效果也完全不一样,运行后如下:

知道什么问题之后,我们可以改下上面的代码,有下面两种改法:

#函数修改列表

def musics(music_lists,music_lists2):
    music_lists[-1] = "you love is foever,don't forget";
    for music in music_lists:
        print("The music name is " + music);
    print("\n..............................\n");
    while music_lists:
        music_lists2 = music_lists.pop();
        other_musics = [];
        other_musics.append(music_lists2);
        for music in other_musics:
            print("The other music name is " + music);

musics(['My Love','Forever Love','Forget Love'],[]);
​
#函数修改列表

def musics(music_lists,music_lists2):
    music_lists[-1] = "you love is foever,don't forget";
    for music in music_lists:
        print("The music name is " + music);
    print("\n..............................\n");
    other_musics = [];
    while music_lists:
        music_lists2 = music_lists.pop();
        other_musics.append(music_lists2);
    for music in other_musics:
        print("The other music name is " + music);

musics(['My Love','Forever Love','Forget Love'],[]);

运行后如下图所示:

注:上面三种情况好好看看,在编程中经常会出现这种小问题小细节,所以需要非常注意。

(3)、禁止函数修改列表,在上面的代码中,我们将列表都给删掉了,那怎么禁止函数修改列表呢,可以使用之前学习到的切片,用切片表示法[:],意味着只创建列表的副本,而不对原列表进行处理。

之前的上面的代码就会直接把列表元素都清除掉了,调用函数后打印之前的列表,如下所示:

#函数修改列表

def musics(music_lists,music_lists2):
    music_lists[-1] = "you love is foever,don't forget";
    for music in music_lists:
        print("The music name is " + music);
    print("\n..............................\n");
    other_musics = [];
    while music_lists:
        music_lists2 = music_lists.pop();
        other_musics.append(music_lists2);
    for music in other_musics:
        print("The other music name is " + music);

music_lists = ['My Love','Forever Love','Forget Love'];
musics(music_lists,[]);
print(music_lists);

运行后如下图所示:

我们修改上面的代码,如下图所示:

#函数修改列表

def musics(music_lists,music_lists2):
    music_lists[-1] = "you love is foever,don't forget";
    for music in music_lists:
        print("The music name is " + music);
    print("\n..............................\n");
    other_musics = [];
    while music_lists:
        music_lists2 = music_lists.pop();
        other_musics.append(music_lists2);
    for music in other_musics:
        print("The other music name is " + music);

music_lists = ['My Love','Forever Love','Forget Love'];
musics(music_lists[:],[]);
print(music_lists);

运行后还是之前的最开始原先的列表,因为只是复制了个副本实参music_lists[:]传递给函数做处理,如下图所示:

以上内容仅供大家学习参考,谢谢!

猜你喜欢

转载自blog.csdn.net/u012561176/article/details/81946310
今日推荐